在部署之前,如何验证我的新SSL密钥和证书是否可以通过我的Heroku应用程序有效地提供SSL?

时间:2017-10-20 18:12:49

标签: ssl heroku https ssl-certificate

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中更新我的证书时,一切都会顺利进行?

相关:Renewing SSL certificate on Heroku

1 个答案:

答案 0 :(得分:0)

一位同事提出的运行nginx的建议让我有了一个自信的方式来了解一切都会顺利部署。

我用

配置了nginx
server {
     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.crtDigiCertCA.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.