certbot-auto / letsencrypt 为指向同一服务器的多个域设置一个密钥
certbot-auto / letsencrypt setting up one key for multiple domains pointing to the same server
我真的更像是一名前端开发人员,所以服务器配置对我来说是一个全新的领域,抱歉,如果这是一个简单的问题!
我 运行 在尝试让我的 certbot-auto 为多个域生成指向一个框的 SSH 密钥时遇到了一些麻烦。
我有 3-4 个域(domain1.net
、domain2.io
、domain3.me
、domain4.codes
),它们都指向同一个 Digital Ocean droplet。
以前(几个月前),我曾直接用 letsencrypt
尝试过(当时没有 certbot
)。不知何故,我的所有域都可以使用 SSL,但它们最近过期了,我现在似乎只能续订 domain1.net
而不是其余的。
我尝试了以下命令:
./certbot-auto certonly -a webroot --agree-tos -w /var/www/domain1.net/public_html/ \--expand -d domain1.net,www.domain1.net,domain2.io,www.domain2.io,domain3.me,www.domain3.me,domain4.codes,www.domain4.codes
...这似乎有效,我得到以下信息:
| Saving debug log to /var/log/letsencrypt/letsencrypt.log │
│ Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org │
│ Cert not yet due for renewal │
│ Renewing an existing certificate │
│ Performing the following challenges: │
│ http-01 challenge for domain1.net │
│ http-01 challenge for www.domain1.net │
│ http-01 challenge for domain2.io │
│ http-01 challenge for www.domain2.io │
│ http-01 challenge for domain3.me │
│ http-01 challenge for www.domain3.me │
│ http-01 challenge for domain4.codes │
│ http-01 challenge for www.domain4.codes │
│ Using the webroot path /var/www/domain1.net/public_html for │
│ all unmatched domains. │
│ Waiting for verification... │
│ Cleaning up challenges │
│ Generating key (2048 bits): │
│ /etc/letsencrypt/keys/0012_key-certbot.pem │
│ Creating CSR: /etc/letsencrypt/csr/0012_csr-certbot.pem
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/domain1.net/fullchain.pem. Your cert
will expire on 2017-02-20. To obtain a new or tweaked version of
this certificate in the future, simply run certbot-auto again. To
non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
..好的,太棒了!然而,只有 domain1.net
和 www.domain1.net
似乎在工作...其他域声称不使用 HTTPS!
我还在 /etc/letsencrypt/live/
目录中看到多个文件。我之前曾尝试让它工作(直接使用 letsencrypt,而不是通过 certbot),直到今天它们都过期了拒绝续订。这是我在该目录中看到的内容:
tom@Personal:/opt$ sudo ls -la /etc/letsencrypt/live/
total 20
drwx------ 5 root root 4096 Nov 22 18:22 .
drwxr-xr-x 8 root root 4096 Nov 22 18:22 ..
drwxr-xr-x 2 root root 4096 Nov 22 18:41 domain1.net
drwxr-xr-x 2 root root 4096 Oct 16 00:00 domain1.net-0001
drwxr-xr-x 2 root root 4096 Nov 22 18:22 www.domain1.net
嗯..不知道为什么里面有多个条目。不应该只有一个吗?
无论如何——我对 HTTPS/keys/NginX 不够精通,无法解决这个问题,我正在努力。我只想获取我的 SSL 密钥:
- 适用于上述所有领域
- 通过 certbot-auto 更新自动更新
并且不确定我在这里搞砸了哪里......非常感谢任何帮助!
编辑:这是我的服务器配置块在 nginx 中的样子:
server {
# listen 80 default_server;
# listen [::]:80 default_server ipv6only=on;
# START LETS ENCRYPT ADDITIONS:
listen 443 ssl;
server_name domain1.net www.domain1.net domain2.io www.domain2.io domain3.me www.domain3.me domain4.codes www.domain4.codes;
ssl_certificate /etc/letsencrypt/live/www.domain1.net/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/www.domain1.net/privkey.pem; # managed by Certbot
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
# /END LETS ENCRYPT ADDITION
root /var/www/domain1.net/public_html;
index index.php index.html index.htm;
# FOR LETSENCRYPT AUTO-RENEWAL, we must give it access to /.well-known
location ~ /.well-known {
allow all;
}
# /END LETSENCRYPT AUTO_RENEWAL
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
只是想跟进 - 我成功了!
原来我的命令是正确的,但我误用了 -d
标志 -- 它需要分别应用于每个域。所以更正后的命令:
./certbot-auto certonly -a webroot --agree-tos -w /var/www/domain1.net/public_html/ \--expand -d domain1.net,www.domain1.net -d domain2.io,www.domain2.io -d domain3.me,www.domain3.me -d domain4.codes,www.domain4.codes
我真的更像是一名前端开发人员,所以服务器配置对我来说是一个全新的领域,抱歉,如果这是一个简单的问题!
我 运行 在尝试让我的 certbot-auto 为多个域生成指向一个框的 SSH 密钥时遇到了一些麻烦。
我有 3-4 个域(domain1.net
、domain2.io
、domain3.me
、domain4.codes
),它们都指向同一个 Digital Ocean droplet。
以前(几个月前),我曾直接用 letsencrypt
尝试过(当时没有 certbot
)。不知何故,我的所有域都可以使用 SSL,但它们最近过期了,我现在似乎只能续订 domain1.net
而不是其余的。
我尝试了以下命令:
./certbot-auto certonly -a webroot --agree-tos -w /var/www/domain1.net/public_html/ \--expand -d domain1.net,www.domain1.net,domain2.io,www.domain2.io,domain3.me,www.domain3.me,domain4.codes,www.domain4.codes
...这似乎有效,我得到以下信息:
| Saving debug log to /var/log/letsencrypt/letsencrypt.log │
│ Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org │
│ Cert not yet due for renewal │
│ Renewing an existing certificate │
│ Performing the following challenges: │
│ http-01 challenge for domain1.net │
│ http-01 challenge for www.domain1.net │
│ http-01 challenge for domain2.io │
│ http-01 challenge for www.domain2.io │
│ http-01 challenge for domain3.me │
│ http-01 challenge for www.domain3.me │
│ http-01 challenge for domain4.codes │
│ http-01 challenge for www.domain4.codes │
│ Using the webroot path /var/www/domain1.net/public_html for │
│ all unmatched domains. │
│ Waiting for verification... │
│ Cleaning up challenges │
│ Generating key (2048 bits): │
│ /etc/letsencrypt/keys/0012_key-certbot.pem │
│ Creating CSR: /etc/letsencrypt/csr/0012_csr-certbot.pem
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/domain1.net/fullchain.pem. Your cert
will expire on 2017-02-20. To obtain a new or tweaked version of
this certificate in the future, simply run certbot-auto again. To
non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
..好的,太棒了!然而,只有 domain1.net
和 www.domain1.net
似乎在工作...其他域声称不使用 HTTPS!
我还在 /etc/letsencrypt/live/
目录中看到多个文件。我之前曾尝试让它工作(直接使用 letsencrypt,而不是通过 certbot),直到今天它们都过期了拒绝续订。这是我在该目录中看到的内容:
tom@Personal:/opt$ sudo ls -la /etc/letsencrypt/live/
total 20
drwx------ 5 root root 4096 Nov 22 18:22 .
drwxr-xr-x 8 root root 4096 Nov 22 18:22 ..
drwxr-xr-x 2 root root 4096 Nov 22 18:41 domain1.net
drwxr-xr-x 2 root root 4096 Oct 16 00:00 domain1.net-0001
drwxr-xr-x 2 root root 4096 Nov 22 18:22 www.domain1.net
嗯..不知道为什么里面有多个条目。不应该只有一个吗?
无论如何——我对 HTTPS/keys/NginX 不够精通,无法解决这个问题,我正在努力。我只想获取我的 SSL 密钥:
- 适用于上述所有领域
- 通过 certbot-auto 更新自动更新
并且不确定我在这里搞砸了哪里......非常感谢任何帮助!
编辑:这是我的服务器配置块在 nginx 中的样子:
server {
# listen 80 default_server;
# listen [::]:80 default_server ipv6only=on;
# START LETS ENCRYPT ADDITIONS:
listen 443 ssl;
server_name domain1.net www.domain1.net domain2.io www.domain2.io domain3.me www.domain3.me domain4.codes www.domain4.codes;
ssl_certificate /etc/letsencrypt/live/www.domain1.net/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/www.domain1.net/privkey.pem; # managed by Certbot
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
# /END LETS ENCRYPT ADDITION
root /var/www/domain1.net/public_html;
index index.php index.html index.htm;
# FOR LETSENCRYPT AUTO-RENEWAL, we must give it access to /.well-known
location ~ /.well-known {
allow all;
}
# /END LETSENCRYPT AUTO_RENEWAL
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
只是想跟进 - 我成功了!
原来我的命令是正确的,但我误用了 -d
标志 -- 它需要分别应用于每个域。所以更正后的命令:
./certbot-auto certonly -a webroot --agree-tos -w /var/www/domain1.net/public_html/ \--expand -d domain1.net,www.domain1.net -d domain2.io,www.domain2.io -d domain3.me,www.domain3.me -d domain4.codes,www.domain4.codes