#############
Servidor web
#############
Instalar servidor web
=====================
Para instalar el servidor SSH, si no estuviera instalado, debemos ejecutar el siguiente comando:
.. code-block:: console
user@server-carpet:~$ apt update
user@server-carpet:~$ apt install apache2
Si lo acabamos de instalar debemos iniciarlo y permitir su inicio en el arranque del equipo:
.. code-block:: console
user@server-carpet:~$ systemctl enable apache2
user@server-carpet:~$ systemctl start apache2
Conectarse al servidor web
===========================
Modificar archivo hosts / añadir subdominio
--------------------------------------------
En nuestro caso, al disponer de un dominio resoluble en Internet, hemos añadido el subdominio *www.carpet4you.site*.
Comprobaremos con el comando *dig* si ha sido añadido correctamente:
.. code-block:: console
user@server-carpet:~$ dig www.carpet4you.site.
; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> www.carpet4you.site.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30217
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.carpet4you.site. IN A
;; ANSWER SECTION:
www.carpet4you.site. 3600 IN A 192.168.56.109
;; Query time: 111 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun Oct 24 19:37:36 UTC 2021
;; MSG SIZE rcvd: 64
Si ahora intentamos conectarnos a dicho dominio desde el navegador web veremos:
.. image :: ../images/web1.png
:width: 500
:align: center
|br|
.. note ::
Si no tuviéramos un archivo disponible siempre podríamos editar el archivo hosts de nuestro equipo.
Generar certificado autofirmado
================================
Para generar el certificado autofirmado podemos utilizar el siguiente comando:
.. code-block:: console
user@server-carpet:~$ sudo openssl req -x509 -nodes -days 90 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
Vamos a desgranar el comando:
* **openssl**, es el comando básico para la gestión de OpenSSL.
* **req**, indicamos que queremos usar el estándar X.509 de petición de firma de certificados (CSR).
* **-x509**, modificador de la opción anterior, con la que indicamos que queremos autofirmarlo en vez de generar una petición de firma a una entidad de certificación.
* **-nodes**, indica que no queremos proteger el certificado con una contraseña. Esto es importante puesto que Apache necesitará utilizar el certificado sin que un usuario/a tenga que introducir la contraseña simétrica con cada petición.
* **-days 90**, periodo de validez del certificado.
* **-newkey rsa:2048**, esto especifica que queremos generar un nuevo certificado y una nueva clave al mismo tiempo. No hemos creado la clave necesaria para firmar el certificado en un paso anterior, así que tenemos que crearla junto con el certificado. La parte rsa:2048 le indica que cree una clave RSA de 2048 bits.
* **-keyout**, este modificador indica a OpenSSL dónde guardar el archivo de clave privada generado que estamos creando.
* **-out**, indicamos dónde queremos guardar el certificado que estamos creando.
Nos pedirá una serie de datos que podremos ir completando con el teclado:
.. code-block:: console
:emphasize-lines: 13,14,15,16,17,18,19
Generating a RSA private key
.......................+++++
.+++++
writing new private key to '/etc/ssl/private/apache-selfsigned.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:Badajoz
Locality Name (eg, city) []:El Carrascalejo
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Carpet4You
Organizational Unit Name (eg, section) []:IT Management
Common Name (e.g. server FQDN or YOUR name) []:www.carpet4you.site
Email Address []:pablo@carpet4you.site
Configurar el sitio nuevo en Apache
===================================
Creamos el archivo:
.. code-block:: console
user@server-carpet:~$ sudo nano /etc/apache2/sites-available/www.carpet4you.site.conf
En dicho archivo, añadimos el siguiente texto:
.. code-block:: console
ServerName www.carpet4you.site
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
También debemos activar una serie de módulos y configuraciones
.. code-block:: console
user@server-carpet:~$ sudo a2enmod ssl
user@server-carpet:~$ sudo a2enmod headers
user@server-carpet:~$ sudo a2enconf ssl-params
Reiniciamos el servicio tal y como hemos visto de forma previa.
Ahora podremos visitar la web con el nuevo certificado y comprobar que funciona:
.. image :: ../images/web2.png
:width: 500
:align: center
|br|
.. |br| raw:: html