我正在尝试在我的服务器上设置 Let's Encrypt 证书,但到目前为止,所有可能出错的地方都出错了。我下载了证书,但脚本没有弄乱我的 Apache 配置文件,因此我必须手动处理它们。
编辑:站点配置已启用a2ensite
,服务器正在监听端口 443。ssl
模块也已启用。
该站点的 HTTPS 版本的一个配置文件如下所示:
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/example.com/www
<Directory /var/www/example.com/www/>
Options FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>
<Directory /var/www/example.com/www/files/>
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com.error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/example.com.access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
<VirtualHost *:443>
ServerName plan.example.com
DocumentRoot /var/www/example.com/plan
<Directory /var/www/example.com/plan/>
Options -Indexes
AllowOverride All
Order allow,deny
allow from all
</Directory>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
相当标准。不过,每次我在 Chrome 中打开网站的 HTTPS 版本时,都会出现以下情况:
我的配置文件有什么问题?
答案1
看起来您的服务器没有在端口 443 上发送任何 SSL 证书,即使您的配置看起来没问题。以下是您应该检查的事项列表(我猜您使用的是 debian 或 ubuntu,因为您使用了 a2ensite):
- 检查 /etc/letsencrypt/live/example.com/ 上的权限是否允许用户 apache2 读取它们(包括每个目录级别的权限)。由于您手动下载了这些文件,因此权限可能不正确
- 检查服务器日志(通常在 /var/log/apache2 中:access.log、error.log、example.com.access.log 和 example.com.error.log:那里可能有相关信息
- 启用虚拟主机后,检查是否重新启动(或重新加载)了 apache2 服务器
- 检查是否没有为相同的 ServerName 和端口配置另一个已启用的 VirtualHost(在 /etc/apache2/sites-enabled 中)。如果是,Apache 将按字母顺序使用第一个
检查您的 fullchain.pem 是否与 pivkey.pem 中的私钥匹配(您可能复制了错误的文件)。以下两个命令行应给出相同的结果:
openssl x509 -noout -modulus -in /etc/letsencrypt/live/example.com/fullchain.pem | openssl md5 openssl rsa -noout -modulus -in /etc/letsencrypt/live/example.com/privkey.pem | openssl md5
(来源 :https://www.digicert.com/ssl-support/apache-fix-common-ssl-errors.htm)