Tutoriales

Certificado SSL autofirmado de Apache en Rocky Linux 10

Un certificado SSL autofirmado le permite ejecutar Apache a través de HTTPS en Rocky Linux 10 sin comprar un certificado de una autoridad certificadora. Esta es la opción correcta para servidores provisionales, aplicaciones internas y configuraciones de laboratorios locales que no requieren un certificado de confianza pública.

Los certificados SSL autofirmados son una manera fácil de habilitar HTTPS existir apache No es necesario comprar un certificado. autoridad certificadora (California).

Muchos tutoriales antiguos todavía utilizan el básico openssl req -x509 Comando para crear un certificado. Si bien esto funciona, a menudo configura un certificado sin certificado. Alias ​​de tema (red de almacenamiento) navegadores web modernos como aleación de cromo y Firefox El soporte SAN ha sido necesario durante muchos años. Sin él, los visitantes verán errores como ERR_CERT_COMMON_NAME_INVALIDincluso si el certificado nombre común parece correcto.

En esta guía utilizarás san.cnf El perfil incluye red de almacenamiento entrada. Luego configurará un completo Servidor virtual Apache SSL para store.linuxapp.com Y aplique algunas configuraciones de seguridad TLS recomendadas. El mismo proceso también se aplica a sombrero rojo 10 y AlmaLinux 10.

Requisitos previos

Antes de comenzar, asegúrese de tener:

  • Rocky Linux 10 se instala utilizando un usuario sudo no root.
  • El nombre de dominio que apunta a la dirección IP de su servidor (Pautas para usar store.tecmint.com Por ejemplo).
  • Se puede acceder a los puertos 80 y 443, o se pueden modificar las reglas del firewall.
Si necesita un servidor Linux, DigitalOcean ofrece planes VPS en la nube confiables desde $ 4 al mes. tu también obtienes $200 puntos gratis Inicie su primer servidor y pruébelo usted mismo, disponible para tecmenta miembro. Podemos ganar una comisión sin costo adicional para usted.

Boletín semanal de TechMint

conseguir Aprenda el curso intensivo de 7 días de Linux Únase a más de 34.000 profesionales de Linux que leen gratis todos los jueves.

Revise su correo electrónico para ver el enlace mágico para comenzar.

Algo salió mal. Por favor inténtalo de nuevo.

Paso 1: instale Apache y mod_ssl

LokiLinux 10 Ya incluido AbiertoSSL en el sistema operativo base, por lo que no es necesario instalarlo por separado. lo que necesitas es apache (httpd) y mod_ssl paquete, que añade SSL/TLS Soporta servidores web.

sudo dnf install httpd mod_ssl -y

cuando mod_ssl Después de la instalación, crea automáticamente un perfil SSL predeterminado en la siguiente ubicación:

/etc/httpd/conf.d/ssl.conf

A continuación, comience apache Y configúrelo para que se inicie automáticamente cuando se inicie el servidor:

sudo systemctl start httpd
sudo systemctl enable --now httpd

Verifícalo ahora apache Se ejecuta correctamente:

sudo systemctl status httpd
Verificar el estado del servidor Apache

Si esto le ayuda a ejecutar Apache en Rocky Linux 10, Quien sigue luchando contra los viejos escenarios.

Paso 2: abra los puertos 80 y 443 en el firewall

LokiLinux Utilice firewalld para controlar el tráfico de red entrante. De forma predeterminada, sólo se permiten puertos y servicios aprobados a través del firewall.

desde apache Sirve tráfico de red regular en el puerto 80 (protocolo HTTP) y tráfico cifrado en el puerto 443 (HTTPS), ambos puertos deben estar abiertos. De lo contrario, ni siquiera los visitantes podrán acceder a su sitio. apache Funciona correctamente.

Ejecute el siguiente comando:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

Para verificar que ambos servicios estén permitidos a través del firewall, ejecute:

sudo firewall-cmd --list-services

También puede confirmar que Apache está escuchando en ambos puertos web:

sudo ss -tlnp | grep httpd
Permitir el tráfico web a través de Firewalld
Permitir el tráfico web a través de Firewalld

Una vez que el firewall esté listo, el siguiente paso es establecer las credenciales SSL autofirmadas correctas usando el siguiente comando Alias ​​de tema (red de almacenamiento) apoyo.

Paso 3: crear un archivo de configuración OpenSSL usando SAN

uno Alias ​​de tema (red de almacenamiento) especifica el nombre de host y la dirección IP para los cuales el certificado es válido; los navegadores modernos ya no dependen de nombre común (Porcelana) se utiliza solo al validar credenciales.

Si el certificado no contiene una entrada SAN, navegadores como Chrome, Firefox y Edge lo rechazarán con el siguiente error:

ERR_CERT_COMMON_NAME_INVALID

Primero cree un directorio para almacenar credenciales, claves privadas y archivos de configuración:

sudo mkdir -p /etc/ssl/store.linuxapp.com

A continuación, cree el archivo de configuración de OpenSSL:

sudo vi /etc/ssl/store.linuxapp.com/san.cnf

Agregue lo siguiente:

[req]
default_bits       = 2048
prompt             = no
default_md         = sha256
distinguished_name = dn
x509_extensions    = v3_req

[dn]
C  = IN
ST = Maharashtra
L  = Mumbai
O  = LinuxApp
OU = IT
CN = store.linuxapp.com

[v3_req]
subjectAltName = @alt_names

[alt_names]
DNS.1 = store.linuxapp.com
DNS.2 = www.store.linuxapp.com

Esto es lo que hacen las partes importantes:

  • [dn] Contiene información de identidad de credencial.
  • CN (nombre común) Especifique el nombre del host principal.
  • [v3_req] Habilite la expansión de credenciales.
  • Nombre alternativo del tema Dígale a OpenSSL que use las entradas definidas en [alt_names].
  • DNS.1 y DNS.2 Define los nombres de host en los que los navegadores confiarán para este certificado.

En este ejemplo:

  • store.linuxapp.com es el sitio web principal.
  • www.store.linuxapp.com Cubre la versión www del mismo sitio web.

Si su servidor utiliza un nombre de dominio diferente, reemplace todas las apariciones de store.linuxapp.com Utilice su propio nombre de host.

También puedes agregar dominios o subdominios adicionales creando más entradas:

[alt_names]
DNS.1 = store.linuxapp.com
DNS.2 = www.store.linuxapp.com
DNS.3 = api.store.linuxapp.com
DNS.4 = admin.store.linuxapp.com

Para aplicaciones internas a las que se accede a través de direcciones IP, también puede incluir entradas SAN basadas en IP:

[alt_names]
DNS.1 = store.linuxapp.com
IP.1  = 192.168.1.100

Cuando haya terminado de editar el archivo, guarde y salga del editor.

Si los requisitos de SAN son una novedad para usted, Quienes recibieron un error de certificado del navegador que no pudieron explicar.

Paso 4: generar clave privada y certificado autofirmado

Ahora desde san.cnf Una vez que los archivos estén en su lugar, puede generar la clave privada y el certificado autofirmado con un solo comando.

sudo openssl req -x509 -nodes -days 365 \
  -newkey rsa:2048 \
  -keyout /etc/ssl/store.linuxapp.com/apache.key \
  -out /etc/ssl/store.linuxapp.com/apache.crt \
  -config /etc/ssl/store.linuxapp.com/san.cnf

Durante este proceso, AbiertoSSL Muestra un indicador de progreso mientras genera claves RSA.

Cree un certificado SSL autofirmado
Cree un certificado SSL autofirmado

Una vez que se complete el comando, tendrá dos archivos nuevos:

  • apache.key – Su clave privada.
  • apache.crt – Su certificado SSL autofirmado.

A continuación, debe proteger su clave privada, que es el archivo más confidencial de toda la configuración, porque si alguien puede obtenerla, puede hacerse pasar por su sitio web.

sudo chmod 600 /etc/ssl/store.linuxapp.com/apache.key
sudo chmod 644 /etc/ssl/store.linuxapp.com/apache.crt

Verifique que ambos archivos existan y tengan los permisos correctos.

ls -l /etc/ssl/store.linuxapp.com/

producción:

total 12
-rw-r--r--. 1 root root 1371 Jun  1 11:24 apache.crt
-rw-------. 1 root root 1704 Jun  1 11:24 apache.key
-rw-r--r--. 1 root root  334 Jun  1 11:24 san.cnf

Ahora verifique que la entrada SAN esté realmente integrada en la credencial.

openssl x509 -in /etc/ssl/store.linuxapp.com/apache.crt -text -noout | grep -A2 "Subject Alternative"
Confirmar la configuración de SAN en las credenciales SSL
Confirmar la configuración de SAN en las credenciales SSL

Si ve su nombre de host en la lista a continuación Alias ​​de temael certificado se ha generado correctamente.

si red de almacenamiento Falta una parte o está vacía, el navegador está como aleación de cromo y Firefox Los certificados con errores de validación del nombre de host se rechazarán incluso si nombre común (CN) coincide con el nombre del sitio.

Paso 5: configurar el host virtual Apache SSL

A pesar de mod_ssl Instale el archivo de configuración SSL predeterminado (ssl.conf)es mejor crear un separado anfitrión virtual archivos para cada sitio web, lo que mantiene su configuración organizada y facilita la administración de múltiples sitios web en el mismo servidor.

Antes de configurar Apache, cree un sitio web de prueba simple en el directorio DocumentRoot para que pueda servirse a través de HTTPS.

sudo mkdir -p /var/www/store.linuxapp.com
echo "" | sudo tee /var/www/store.linuxapp.com/index.html

Ahora cree un archivo de configuración de Apache dedicado:

sudo vi /etc/httpd/conf.d/store.linuxapp.com-ssl.conf

Agregue la siguiente configuración:


    ServerName store.linuxapp.com
    ServerAlias www.store.linuxapp.com
    DocumentRoot /var/www/store.linuxapp.com

    SSLEngine on
    SSLCertificateFile    /etc/ssl/store.linuxapp.com/apache.crt
    SSLCertificateKeyFile /etc/ssl/store.linuxapp.com/apache.key

    SSLProtocol         -all +TLSv1.2 +TLSv1.3
    SSLHonorCipherOrder on
    SSLSessionTickets   off

    
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    

    ErrorLog  /var/log/httpd/store.linuxapp.com-ssl-error.log
    CustomLog /var/log/httpd/store.linuxapp.com-ssl-access.log combined

Guarde el archivo y salga del editor.

En este punto, Apache sabe dónde se encuentran los archivos de su sitio web y qué certificado SSL utilizar.

Si la configuración de VirtualHost aquí te salva de una madriguera de conejo Apache nocturna, .

Paso 6: agregue la redirección HTTP a HTTPS

en este punto, apache Configurar como servicio HTTPS tráfico portuario Capítulo 443. Sin embargo, los usuarios aún pueden acceder a su sitio usando http:// URL o simplemente ingrese el nombre de dominio en su navegador.

Para garantizar que todo el tráfico esté cifrado, cree un segundo VirtualHost que escuche en el puerto 80 y redirija automáticamente a los invitados a HTTPS.

Crea un nuevo perfil:

sudo vi /etc/httpd/conf.d/store.linuxapp.com.conf

Agregue la siguiente configuración:


    ServerName store.linuxapp.com
    ServerAlias www.store.linuxapp.com

    Redirect permanent / 

Antes de recargar Apache, asegúrese de verificar que no haya errores de sintaxis en la configuración.

sudo apachectl configtest

Si Apache encuentra un problema, muestra el archivo de configuración y el número de línea donde ocurrió el error.

AH00526: Syntax error on line 12 of /etc/httpd/conf.d/store.linuxapp.com-ssl.conf

Corrija los errores informados y ejecute configtest otra vez hasta que veas Syntax OK.

Después de verificar la configuración, vuelva a cargar apache Aplique cambios sin interrumpir las conexiones existentes:

sudo systemctl reload httpd

Puede confirmar que Apache está escuchando conexiones HTTP y HTTPS mediante:

sudo ss -tlnp | grep httpd

Ejemplo de salida:

LISTEN 0      511                *:443             *:*    users:(("httpd",pid=6076,fd=6)
LISTEN 0      511                *:80              *:*    users:(("httpd",pid=6076,fd=4)

Si ve entradas para ambos 80 y Capítulo 443, apache Listo para manejar solicitudes HTTP y redirigirlas a HTTPS.

Paso 7: Pruebe la configuración HTTPS

y apache recargar y servidor virtual SSL está activo, es hora de verificar que HTTPS esté funcionando correctamente.

Agregar entrada de host temporal (opcional)

Si su dominio aún no apunta a un servidor, agregue una entrada temporal a la máquina que está probando.

reemplazar 192.168.1.10 Con la dirección IP real de su servidor, esto le permite a su sistema resolver nombres de host localmente sin la necesidad de registros DNS:

echo "192.168.1.10  store.linuxapp.com www.store.linuxapp.com" | sudo tee -a /etc/hosts

Puede verificar que el nombre de host se resuelva correctamente:

getent hosts store.linuxapp.com

Ejemplo de salida:

192.168.1.10  store.linuxapp.com

Probar la conexión HTTPS

Dado que el certificado está autofirmado, curl El valor predeterminado no confiará en él, así que use -k Opción para omitir la validación de credenciales durante la prueba.

curl -kv  2>&1 | grep -E "SSL|subject|issuer|Connected"

Ejemplo de salida:

* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 / X25519MLKEM768 / RSASSA-PSS
*  subject: C=IN; ST=Maharashtra; L=Mumbai; O=LinuxApp; OU=IT; CN=store.linuxapp.com
*  issuer: C=IN; ST=Maharashtra; L=Mumbai; O=LinuxApp; OU=IT; CN=store.linuxapp.com
*  SSL certificate verify result: self-signed certificate (18), continuing anyway.
* Connected to store.linuxapp.com (192.168.122.247) port 443
Server: Apache/2.4.63 (Rocky Linux) OpenSSL/3.5.1

Verificar redireccionamiento HTTP

A continuación, confirme que todo el tráfico HTTP se redirija a HTTPS.

curl -I 

Ejemplo de salida:

HTTP/1.1 301 Moved Permanently
Date: Mon, 01 Jun 2026 06:20:10 GMT
Server: Apache/2.4.63 (Rocky Linux) OpenSSL/3.5.1
Location: 
Content-Type: text/html; charset=iso-8859-1

Esto confirma que los visitantes que utilizan URL no cifradas son redirigidos automáticamente a la versión HTTPS segura del sitio.

Prueba en navegador web

Abierto En su navegador verá una advertencia de certificado, esto es esperado ya que ninguna CA reconocida firmó este certificado, así que haga clic en avanzado Y continúe confirmando que la página esté cargada y la conexión esté cifrada.

Advertencia del navegador sobre certificados SSL autofirmados
Advertencia del navegador sobre certificados SSL autofirmados

Si esta configuración ahora funciona correctamente en su servidor, ¿Quién todavía ejecuta HTTP puro en una configuración interna de Apache?

Una nota sobre la política de criptomonedas

Una de las mayores ventajas LokiLinux 10 La ventaja es que no tiene que dedicar demasiado tiempo a ajustar manualmente la configuración SSL/TLS. La distribución hereda el marco de políticas criptográficas de todo el sistema de RHEL 10, que brinda soporte para aplicaciones habilitadas para TLS como apache, nginx, Abrir SSHy otros.

Estrategias predeterminadas, apropiadamente nombradas por defectoha desactivado protocolos obsoletos y ha aplicado estándares de cifrado modernos en todo el sistema operativo.

Puede consultar las políticas actualmente activas de las siguientes maneras:

sudo update-crypto-policies --show

junto con por defecto La política es positiva, LokiLinux 10 Aplica un mínimo de TLS 1.2 y utiliza conjuntos de cifrado sólidos de forma predeterminada. Esto significa que no necesita realizar mantenimiento manual durante mucho tiempo. Conjunto de cifrado SSL Las cadenas en la configuración de Apache son solo para fines básicos de seguridad.

Es por eso que la configuración de VirtualHost en esta guía solo especifica:

SSLProtocol -all +TLSv1.2 +TLSv1.3

El sistema operativo maneja detalles de cifrado de nivel inferior, lo que hace que la configuración SSL/TLS sea más simple y consistente.

Si desea reforzar el servidor detrás de esta configuración web, curso SSH Una introducción paso a paso a la autenticación basada en claves, la tunelización y el refuerzo de la configuración SSH en Rocky Linux.
en conclusión

En esta guía, instaló apache y protocolo SSL Compatible, abra los puertos de firewall necesarios, genere un certificado autofirmado con la información adecuada Alias ​​de tema (red de almacenamiento) entrada, configura un VirtualHost HTTPS dedicado y redirige todo el tráfico HTTP a HTTPS.

El paso de verificación SAN es particularmente importante porque garantiza que los navegadores modernos puedan verificar correctamente las credenciales. Muchos tutoriales antiguos omiten este paso y terminan con credenciales que el navegador rechaza inmediatamente.

Para servicios internos, entornos de desarrollo y sistemas de laboratorio, los certificados autofirmados proporcionan una forma sencilla de habilitar conexiones HTTPS cifradas sin depender de una autoridad de certificación externa.

Cuando esté listo para publicar su sitio en Internet, puede intercambiar sus credenciales de confianza. vamos a cifrar manteniendo lo mismo servidor virtual apache La estructura que has construido.

Si este artículo fue útil, Con alguien de tu equipo.

Boletín semanal de TechMint

conseguir Aprenda el curso intensivo de 7 días de Linux Únase a más de 34.000 profesionales de Linux que leen gratis todos los jueves.

Revise su correo electrónico para ver el enlace mágico para comenzar.

Algo salió mal. Por favor inténtalo de nuevo.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba