我使用本指南成功创建了一些 LE SSL 证书。
但是,当我更新我的 nginx 配置以使用证书并将所有端口 80 流量重定向到 443 时。http 成功重定向到 https,该站点不会加载。浏览器检测到我有一个有效的证书,但说我没有安全连接。这是我在我的/var/log/nginx/error.log:
2016/03/08 00:11:49 [error] 7301#0: *14 no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking, client: 55.555.55.555, server: 0.0.0.0:443
Run Code Online (Sandbox Code Playgroud)
错误说我没有定义 SSL 证书,尽管我这样做了。这是我的配置:
server {
listen 443 ssl;
server_name cooldomain.pizza www.cooldomain.pizza
ssl_certificate /etc/letsencrypt/live/cooldomain.pizza/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cooldomain.pizza/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
root /home/ubuntu/www/cooldomain-pizza;
index index.php index.html index.htm;
server_name cooldomain.pizza www.cooldomain.pizza;
charset utf-8;
location / {
try_files $uri $uri/ =404; …Run Code Online (Sandbox Code Playgroud) 我的 https 证书将在大约一周后到期,我运行脚本来更新它们。
它们似乎已更新,因为如果我尝试certbot-auto再次运行它,它会向我显示一些消息,说证书到期日期应该更接近今天的日期。
问题是该网站看起来仍在提供旧证书。保质期不变。
这是预期的吗?如何强制更新证书?
相关输出:
$ echo | openssl s_client -connect ionicabizau.net:443 2>/dev/null | openssl x509 -noout -dates
notBefore=Aug 28 03:40:00 2016 GMT
notAfter=Nov 26 03:40:00 2016 GMT
Run Code Online (Sandbox Code Playgroud)
服务器上的文件看起来更新了:
$ ls
cert.pem chain.pem fullchain.pem privkey.pem
$ stat -c '%y' *
2016-11-17 06:03:20.838837999 +0000
2016-11-17 06:03:20.838837999 +0000
2016-11-17 06:03:20.838837999 +0000
2016-11-17 06:03:20.838837999 +0000
Run Code Online (Sandbox Code Playgroud) 我不认为您可以将 SSL 与 localhost 一起使用,但我遇到了这个问答,它说您可以。
我正在寻找类似的说明来执行此 nginx 而不是 apache。
我在跑:
sudo letsencrypt certonly -d localhost
Run Code Online (Sandbox Code Playgroud)
哪个返回 Requested domain localhost is not a FQDN
我想做的事情是否可行,如果可以,如何做?
我正在尝试设置与运行 postgresql 的服务器的远程数据库连接。我已经在使用 LE 证书的远程服务器上运行 nginx。我的问题是 postgresql 证书是否需要像让我们加密这样的 CA 签名,或者自签名证书是否就足够了。我试图了解对我的数据库连接使用自签名证书时的安全风险是什么。
我发现这里已经有一些问答关于这个话题,但没有一个能帮助我解决这个问题。我今天刚刚安装了一个 debian 8 服务器,对我的域的每个请求都被重定向到 https。现在我正在尝试为子域创建一个新的 ssl 证书,该证书失败了,因为 certbot 正在使用 http 访问 .well-known 目录。由于此请求被重定向到 https,因此无法正常工作。我的想法是从重定向中排除这个隐藏目录。
为了测试,我将一个简单的文本放入 .well-known/acme-challenge/ 目录中。每次我对这个文件发出请求时,我仍然会重定向。这是我当前的 nginx 配置:
server {
listen 80 default_server;
#listen [::]:80 default_server;
server_name test.de www.test.de;
root /var/www/html;
location /.well-known/acme-challenge {
root /var/www/html;
allow all;
}
location / {
return 301 https://test.de$request_uri;
}
}
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
include snippets/ssl-test.de.conf;
include snippets/ssl-params.conf;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name …Run Code Online (Sandbox Code Playgroud) 网址:https : //vishnubathala.com/
**Error**
Subject: www.example.com
Issuer: www.example.com
Expires on: Aug 3, 2027
Current date: Nov 9, 2017
PEM encoded chain:
-----BEGIN CERTIFICATE-----
MIICsDCCAZgCCQDghBagwkXvoDANBgkqhkiG9w0BAQsFADAaMRgwFgYDVQQDDA93
d3cuZXhhbXBsZS5jb20wHhcNMTcwODA0MTIxNDAzWhcNMjcwODAyMTIxNDAzWjAa
MRgwFgYDVQQDDA93d3cuZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQDJtN/s4VlruDpshzeRsdhi3AIobpNHOA0n5oCCgMqZH89M2NTW
yxnau116LUwgBAehawRgfaqmy/lY51WUmE7c0otuFJzssCBzQ2hUwBwWLOVmZTta
hwX2EqDrQ1JZWiAXSMO5ljwq+RrUyxZXSxvqIBVctIlgkMOYZRaXtXnkCtos5YL8
GNbMBwrhhUgk7SYcMH4y8u8L2oAudCI1v4oih7WRz0W20FWzLRYZjjZOpDiiBPG/
BlOXzWKkt/HW/URwQUejharNUQmrmvPiwnbXpR52wcqWS2eSyAhjapj7mmcrbTyA
wDyI8uFRD0LgMGdzHa6WkUykEaJLNux3rPXXAgMBAAEwDQYJKoZIhvcNAQELBQAD
ggEBAIwQo04ESpiWOR4pRv+V+DTDdSoEO7AARADD6pmiuraA/qL9HA+kfgxFWpdH
iKiWERTOFLhyjkkeE/eTRDdJwNMVubu0HFSASkfciKlX7HkLBmA1cCEOrUIvMfH0
mDGpolc50jKQt+JSF1qtiyrvy2P8ccAhyG+Ub4EzZddVRWbio87v0Iiho4OtjcLQ
x1vlxq5rKUzcbF7JTY8dt3fntFFKFU3aLI2eoYxuqeQFod6AcTSgCI81vES1FevN
bVbad9bTpGs9f4IhF/Dm9dRvV79n3eV2IsNMyE9HxdEfz900PblsjvpRz+I4Xwkn
6h9BQWroYn3GfzbvOML1HlPLvNo=
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
我按照 ubuntu 14.04 版本的 certbot 中的安装步骤操作,但我不确定服务器会发生什么我收到此错误我该如何解决此错误?
我不确定我的配置是否正确通过我想在没有任何错误的情况下配置它请帮我解决这个问题
ssl-certificate amazon-web-services ubuntu-14.04 lets-encrypt certbot
我在强迫 MariaDB 在 Debian 8 上使用我的 SSL 证书文件时遇到了麻烦。
Apache2 在 /etc/letsencrypt/* 中的当前文件权限下工作正常 唯一对当前证书有问题的服务是 MariaDB。
我尝试对 /etc/letsencrypt/live/domain/*.pem 中的文件使用 ACL:
setfacl -m "u:mysql:r--" /etc/letsencrypt/live/domain/*.pem
Run Code Online (Sandbox Code Playgroud)
它没有用。在以 mysql 用户身份运行 bash 后,我发现 mysql 用户无法访问 /etc/letsencrypt/live。所以我在实时和域目录上运行了 setfacl。
MariaDB 仍然无法访问这些证书。
所以......在将 .pem 文件复制到 /etc/mysql 并将它们的所有权更改为 mysql:mysql 后,它有点工作。现在我得到:
mysqld[4131]: 180211 0:27:54 [Warning] Failed to setup SSL
mysqld[4131]: 180211 0:27:54 [Warning] SSL error: Unable to get private key
mysqld[4131]: 180211 0:27:54 [Note] Server socket created on IP: 'x.x.x.x'.
mysqld[4131]: 180211 0:27:54 [Note] /usr/sbin/mysqld: ready for connections.
Run Code Online (Sandbox Code Playgroud)
效果如下:
mysql --ssl …Run Code Online (Sandbox Code Playgroud) 我有一个来自 Let's Encrypt 的网站 (*.storyfortwo.com) 的通配符证书。
当我访问 http://storyfortwo.com或http://www.storyfortwo.com(无 SSL)时,它们都被重定向到https://www.storyfortwo.com并且加载正确。
在https://www.storyfortwo.com(带有 WWW)上一切都很好。
当我访问https://storyfortwo.com(没有 WWW)时,它给我 ERR_CERT_COMMON_NAME_INVALID 错误。
我将 Apache2 (2.4.29) 与 VirtualHost 文件一起使用:
<VirtualHost *:80>
ServerName storyfortwo.com
ServerAlias www.storyfortwo.com
DocumentRoot /var/www/storyfortwo.com/www
# Redirect Requests to SSL
Redirect permanent / https://www.storyfortwo.com/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
和
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName storyfortwo.com
ServerAlias www.storyfortwo.com
DocumentRoot /var/www/storyfortwo.com/www
ErrorLog ${APACHE_LOG_DIR}/storyfortwo.com.error.log
CustomLog ${APACHE_LOG_DIR}/storyfortwo.com.access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/storyfortwo.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/storyfortwo.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/storyfortwo.com/chain.pem
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /var/www/storyfortwo.com/www>
SSLOptions …Run Code Online (Sandbox Code Playgroud) 我正在尝试更新旧的电子邮件地址,该地址用于接收来自令人惊叹的 Letscrypt 的到期通知。但是,我没有找到一种方法可以令人惊奇地做到这一点:O。
然而我确实尝试过:我删除了旧证书,希望 certbot 会询问我有关新电子邮件的信息,但事实上它没有(可怜的我)
我使用此命令删除了旧证书
certbot delete
Run Code Online (Sandbox Code Playgroud)
然后我选择了我要删除的域。
然后我重新生成一个新的 LetsEncrypt 证书,该证书很成功,没有发现任何错误,并且该网站仍然在线,没有任何进一步的证书问题(值得称赞!):
sudo certbot certonly --nginx -d thecompany.com
Run Code Online (Sandbox Code Playgroud)
但后来,CERTBOT 并没有要求我提供新的电子邮件地址!(我的天啊!)
现在我不知道该怎么办,感觉把头撞到墙上也无济于事,所以,我让手指在键盘上跳舞,并向这里最好的人问了这个问题:)。
非常感谢!
我正在尝试更新通配符let's encrypt证书。
/usr/local/bin/certbot renew
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/sub.myDomain.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - …Run Code Online (Sandbox Code Playgroud) lets-encrypt ×10
ssl ×4
nginx ×3
certbot ×2
apache-2.4 ×1
apache2 ×1
debian ×1
https ×1
linux ×1
mariadb ×1
mysql ×1
php-fpm ×1
postgresql ×1
ubuntu-14.04 ×1