Acho que você não está usando os certificados corretos no lugar correto.
Você deve usar o certificado do servidor emitido por uma CA confiável no SSLCertificateFile
(certificado no formato PEM), SSLCertificateKeyFile
(chave no formato PEM correspondente ao certificado) e SSLCertificateChainFile
(certificados a partir do emissor do certificador host) certificado até e incluindo o certificado raiz no formato PEM).
Em SSLCACertificateFile
, você precisa usar o certificado (também no formato PEM) da autoridade de certificação que assinou os certificados dos clientes.
Veja um exemplo completo, lembre-se de que estou usando um certificado de servidor assinado pela mesma autoridade de certificação que assina os certificados dos clientes para isso. Ajuste se suas necessidades forem diferentes.
-
Gerando os certs
openssl genrsa -des3 -out ca.key 4096 openssl req -new -x509 -days 365 -key ca.key -out ca.crt -subj "/C=US/ST=Some State/L=FancyTown/O=SomeOrg/CN=Self-Signed CA" openssl genrsa -out client.key 4096 openssl req -new -key client.key -out client.csr -subj "/C=US/ST=Some State/L=FancyTown/O=SomeOrg/CN=client" openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt openssl genrsa -out server.key 4096 openssl req -new -key server.key -out server.csr -subj "/C=US/ST=Some State/L=FancyTown/O=SomeOrg/CN=server" openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 02 -out server.crt
-
Movendo-os para um local mais conveniente
mkdir /etc/ssl_ ; mv * /etc/ssl_
-
Instale o servidor da Web e mod_ssl
yum install -y httpd mod_ssl
-
Limpar configuração TLS padrão
truncate -s0 /etc/httpd/conf.d/ssl.conf
-
Configuração comum do TLS para todos os VHosts,
/etc/httpd/conf.d/00-ssl.conf
'' ' LoadModule ssl_module modules / mod_ssl.so
Ouça 443 https SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt SSLStaplingCache shmcb: / run / httpd / stapling_cache (128.000) SSLUseStapling off
SSLPassPhraseDialog exec: / usr / libexec / httpd-ssl-pass-dialog SSLSessionCache shmcb: / run / httpd / sslcache (512000) SSLSessionCacheTimeout 300 Arquivo de inicialização SSLRandomSeed: / dev / urandom 256 Conexão SSLRandomSeed integrada SSLCryptoDevice embutido
SSLStrictSNIVHostCheck desativado SSLProtocol + TLSv1.2-TLSv1.1-TLSv1 -SSLv3 SSLHonorCipherOrder em
SSLCompression off SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384: ECDHE-RSA-AES256-SHA384: ECDHE-RSA-AES128-GCM-SHA256: ECDHE-RSA-AES128-SHA256: -ECDHE-RSA-RC4-SHA: ECDHE-RSA- AE S256-SHA: DHE-RSA-AES256-GCM-SHA384: DHE-RSA-AES256-SHA256: DHE-RSA-AES128-GCM-SHA256: DHE-RSA-AES128-SHA256: DHE-RSA-AES256-SHA: DHE- RSA-AES128-SHA: -RC4-SHA: AES256- GCM-SHA384: AES256-SHA256: CAMELLIA256-SHA: ECDHE-RSA-AES128-SHA: AES128-GCM-SHA256: AES128-SHA256: AES128-SHA: CAMELLIA128-SHA '' '
- Configuração do VHost
/etc/httpd/conf.d/50-ssl-vhost.conf
'' ' ServerAlias localhost.localdomain localhost Servidor ServerName SSLEngine on SSLCertificateFile /etc/_ssl/server.crt SSLCertificateKeyFile /etc/_ssl/server.key SSLCertificateChainFile /etc/_ssl/ca.crt SSLCACertificateFile /etc/_ssl/ca.crt
SSLVerifyClient require
SSLVerifyDepth 10
DocumentRoot /var/www/html
<Directory /var/www/html>
Require all granted
</Directory>
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
'' '
-
Crie um arquivo
index.html
para testeecho 'It works\!' > /var/www/html/index.html
-
Inicie o httpd
systemctl enable --now httpd
- Adicionar nome do host
echo '127.0.1.1 server' >> /etc/hosts
- Teste
Isso funciona (auth ok):
( echo -en 'GET / HTTP/1.1\r\nHost: server\r\n\r\n' ; sleep 2) | openssl s_client -CAfile /etc/_ssl/ca.crt -cert /etc/_ssl/client.crt -key /etc/_ssl/cli
ent.key -connect server:443 -servername server
Isso não, nós não fornecemos um certificado correto:
( echo -en 'GET / HTTP/1.1\r\nHost: server\r\n\r\n' ; sleep 2) | openssl s_client -CAfile /etc/_ssl/ca.crt -connect server:443 -servername server