我有一台装有 Apache 的 CentOS 7 服务器。目前有多个网站使用 VirtualMin 托管在虚拟服务器上作为“顶级服务器”和“子服务器”,即 Apache Webserver 中的多个虚拟服务器。
- 顶级服务器 - www.example1.com (wordpress)
- 子服务器 - www.example2.com (wordpress)
- 子服务器 - www.example3.com (opencart)
- 等等..
Apache 虚拟服务器:
- 默认服务器 - /var/www/html
- 虚拟服务器 - example1.com - /home/example1/public_html
- 虚拟服务器 - example2.com - /home/example1/domains/example2.com/public_html
- 虚拟服务器 - example3.com - /home/example1/domains/example3.com/public_html
我想为所有网站安装 LetsEncrypt SSL。我应该为所有域名安装 1 个 SSL 证书还是为每个域名安装 1 个?
我该怎么做?任何帮助都将不胜感激。
答案1
您有两个选择:
通过多次单独的调用获取多个证书
certbot
;certbot
通过一次调用(指定多个选项)获取具有多个 SAN(主题备用名称)的单个证书-d
。
如果网站完全不相关,我会使用选项 1。如果它们紧密相关,我会使用选项 2。
答案2
我使用 Debian 和 Ubuntu 系统,我喜欢它们的“站点可用与站点启用的每个站点单独配置”的理念。
所以...
我为每个 vhost 都有一个 httpd conf 文件。
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
RewriteEngine on
RewriteRule ^/(.*)$ https://www.example.com/$1 [R,L]
</VirtualHost>
<VirtualHost 10.0.2.15:443>
ServerName example.com
ServerAlias www.example.com
ServerAdmin [email protected]
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog ${APACHE_LOG_DIR}/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
DocumentRoot /var/www-example.com
<directory /var/www-example.com>
Options All
AllowOverride All
Require all granted
</directory>
ErrorLog ${APACHE_LOG_DIR}/ssl-example.com-error.log
CustomLog ${APACHE_LOG_DIR}/ssl-example.com-access.log combined
</VirtualHost>
不要忘记为 建立目录DocumentRoot
。
然后,停止 apache web 服务器,确保防火墙接受到端口 443 的连接,并调用 或certbot
。letsencrypt
我不相信它会修改我的 apache 配置,所以我使用 选项certonly
。对每个域执行一次 -
letsencrypt certonly -d example.com -d www.example.com
然后链接 apache 配置sites-enabled
或使用a2ensite
或无论如何管理活动配置,使用 apache 配置进行测试apache2ctl -t
,如果所有报告正常则重新启动 apache。