Heroku gives simple instructions用于更新SSL证书:
data-image-large
但是,没有迹象表明在部署之前已完成任何验证。由于这是生产,我想确保我提供的两个文件不会导致任何安全问题。
我有我的foo_com.crt(由DigiCert签名),server.key和DigitCertCA.crt。
I've found that I can use $ heroku certs:update server.crt server.key
验证我的证书(在OS X上)。我的证书不能验证:
security verify-cert -c certificate.pem
这让我相信我的中间人可能不被信任,但是:
$ security verify-cert -c foo_com.crt
Cert Verify Result: CSSMERR_TP_NOT_TRUSTED
指定SSL的目的也是成功的
$ security verify-cert -c DigiCertCA.crt
...certificate verification successful.
我尝试使用类似的混合结果的Linux盒子。
$ security verify-cert -p ssl -c foo_com.crt
...certificate verification successful.
如何确保在Heroku中更新我的证书时,一切都会顺利进行?
答案 0 :(得分:0)
一位同事提出的运行nginx的建议让我有了一个自信的方式来了解一切都会顺利部署。
我用
配置了nginxserver {
listen 443 http2 ssl;
listen [::]:443 http2 ssl;
server_name server_IP_address;
ssl_certificate /Users/traff/cert/gd.crt;
ssl_certificate_key /Users/traff/cert/server.key;
server_name localhost;
...
}
一旦我设置了nginx服务器,我就运行了openssl s_client -connect localhost:443 -CApath /etc/ssl/certs
。然后,在我的主机中设置foo.com
以指向我的nginx服务器之后。我使用了curl https://foo.com
。
使用foo_com.crt
和DigiCertCA.crt
(按此顺序)和server.key
的串联,上传成功。
此外,虽然Heroku的文档没有说明,但更新步骤确实验证了SSL能否正常运行
$ heroku certs:update foo_com_DigiCertCA_cat.crt server.key -a my-app
Resolving trust chain... done
_ Potentially Destructive Action
_ This command will change the certificate of endpoint ____
_ (_______.herokussl.com) from _ my-app.
_ To proceed, type my-app or re-run this command with
_ --confirm my-app
> my-app
Updating SSL certificate _____ (____.herokussl.com) for _ my-app... done
Updated certificate details:
Common Name(s): foo.com
Expires At: DateTime
Issuer: /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA
Starts At: DigiCert
Subject: blah blah blah
SSL certificate is verified by a root authority.