使用 let's encrypt 在 Amazon Lightsail 上运行 SSL 时遇到问题 ( certbot --apache
)
- Lightsail 映像 Centos7
- 添加了 Apache2
注意:(example.com、subdomain.example.com 不是我的域名,我将它们匿名化)
这些是我采取的故障排除步骤。
我可以使用 netcat 确认 443 已打开,
Apache 正在使用以下方式监听
lsof -i -P -n | grep LISTEN
从另一个系统运行此命令
echo | openssl s_client -showcerts -servername example.com -connect gnupg.org:443 2>/dev/null | openssl x509 -inform pem -noout -text
显示让我们加密证书(我不知道如何验证它)chrome 显示“此网站无法提供安全连接。example.com 发送了无效响应。ERR_SSL_PROTOCOL_ERROR
这个测试工具https://www.ssllabs.com/ssltest/analyze.html给出结果“评估失败:不支持安全协议”
这些是我安装 certbot 时遵循的说明 https://certbot.eff.org/lets-encrypt/centosrhel7-apache
我的 SSL 配置:
<IfModule mod_ssl.c>
SSLSessionCache shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout 300
SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin
<VirtualHost example.com:443>
# This first-listed virtual host is also the default for *:80
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA
ServerName example.com
ServerAlias example.com
DocumentRoot "/var/www/html/com.example"
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost subdomain.example.com:443>
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA
ServerName subdomain.example.com
ServerAlias subdomain.example.com
DocumentRoot "/var/www/html/com.example.subdomain/"
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
</VirtualHost>
</IfModule>
#certbot 证书
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
Certificate Name: example.com
Serial Number:XXXXXXXXXXXXXXXXXXXXXXXX
Key Type: RSA
Domains: example.com subdomain.example.com
Expiry Date: 2021-04-16 18:02:53+00:00 (VALID: 89 days)
Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
加载Apache模块:
core mod_so http_core mod_access_compat mod_actions mod_alias mod_allowmethods mod_auth_basic mod_auth_digest mod_authn_anon mod_authn_core mod_authn_dbd mod_authn_dbm mod_authn_file mod_authn_socache mod_authz_core mod_authz_dbd mod_authz_dbm mod_authz_groupfile mod_authz_host mod_authz_owner mod_authz_user mod_autoindex mod_cache mod_cache_disk mod_data mod_dbd mod_deflate mod_dir mod_dumpio mod_echo mod_env mod_expires mod_ext_filter mod_filter mod_headers mod_include mod_info mod_log_config mod_logio mod_mime_magic mod_mime mod_negotiation mod_remoteip mod_reqtimeout mod_rewrite mod_setenvif mod_slotmem_plain mod_slotmem_shm mod_socache_dbm mod_socache_memcache mod_socache_shmcb mod_status mod_substitute mod_suexec mod_unique_id mod_unixd mod_userdir mod_version mod_vhost_alias mod_dav mod_dav_fs mod_dav_lock mod_lua prefork mod_proxy mod_lbmethod_bybusyness mod_lbmethod_byrequests mod_lbmethod_bytraffic mod_lbmethod_heartbeat mod_proxy_ajp mod_proxy_balancer mod_proxy_connect mod_proxy_express mod_proxy_fcgi mod_proxy_fdpass mod_proxy_ftp mod_proxy_http mod_proxy_scgi mod_proxy_wstunnel mod_ssl mod_systemd mod_cgi mod_php5
答案1
有几件事解答了这个问题。
确保有一个虚拟主机条目可以解析www.您的域名.com-certbot 需要这个。
每个配置文件只放置一个虚拟主机 - 当每个文件有多个条目时,certbot 无法添加配置。
在我的情况下,主域和子域解析为不同的 IP 地址和服务器(测试和开发/生产)。certbot 无法自动执行此操作,请手动配置 apache 或将两者的 DNS 设置为同一服务器,运行 certbot,然后将配置和证书复制到另一台服务器并再次更改 DNS。