我们从OSCommerce网站转到Magento,也是很好的服务器。 旧的服务器在Apache上,我们的新服务器在NGINX上。 我们所拥有的SSL证书似乎是从GODADDY购买的。
我几乎已经想出了如何将我们的旧服务器的SSL证书切换到我们的新服务器。 但是有几个问题?
1. REKEY CERTIFICATE
我从旧的OSCommerce网站apache虚拟主机发现了三种types的SSL文件:
SSLCertificateFile /etc/apache2/ssl/11-2013/09********ss.crt SSLCertificateKeyFile /etc/apache2/ssl/11-2013/server.key SSLCertificateChainFile /etc/apache2/ssl/11-2013/gd_bundle.crt
我可以将它们复制到新服务器上的位置,并在NGINXconfiguration文件中引用它们吗? 或者我需要生成一个新的ssl密钥, 重新键入 crt文件(哪一个)?
2. NGINXconfiguration NGINXconfiguration似乎只需要引用Apache的两个文件?
# Specify path to your SSL certificates. #ssl_certificate /etc/nginx/certificates/yourcertificate.crt; #ssl_certificate_key /etc/nginx/certificates/yourcertificate.key;
我应该参考NGINX的哪个CRT文件,另一个呢?
3. SSL 3.0和SHA1当我在DigiCert的SSL检查器上查看我们的网站时,它说:
协议支持
TLS 1.0,SSL 3.0
SSL 3.0是一个已知漏洞的过期协议版本。
SSL证书
通用名称= ourdomain.com
Subject Alternative Names = ourdomain.com,www.ourdomain.com
颁发者= Go爸爸安全authentication机构
序号= *****************
SHA1指纹= ***************************
密钥长度= 4096位
签名algorithm= SHA1 + RSA(不build议使用)
安全重新协商:支持
如何确保我们使用正确的协议和SHA? 这是我在新的nginxconfiguration文件中更改的东西吗?
ssl_certificate_key应该包含server.key中的内容,即它们是服务器的未encryption的私钥。
ssl_certificate应包含服务器的证书和证书链, 如文档中所述 , 按照该顺序 。 所以,这基本上是cat 09********ss.crt gd_bundle.crt的输出
一个方便的在线工具来快速检查这些-----BEGIN CERTIFICATE----- / -----END CERTIFICATE-----块包含的是什么,是https://www.sslshopper.com /certificate-decoder.html – 如果你有一台安装了openssl的机器,你当然可以使用
openssl x509 -in certificate.crt -text -noout
关于SSL / TLSconfiguration,我喜欢Mozilla wiki中的这个页面 。 它解释了你可能遇到的大部分缩略词,并给出了合理configuration的合理build议。 有一个附带的在线工具,可以在这里为Apache,nginx,haproxy和AWS LB创build参考设置。 例如,一个完整的nginxconfiguration,以OCSP装订和使用中间configuration文件的HSTS为例, 但您需要了解这些configuration文件的演变 ,因此应定期更新。
server { listen 443 ssl; # certs sent to the client in SERVER HELLO are concatenated in ssl_certificate ssl_certificate /path/to/signed_cert_plus_intermediates; ssl_certificate_key /path/to/private_key; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; # Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits ssl_dhparam /path/to/dhparam.pem; # intermediate configuration. tweak to your needs. ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; ssl_prefer_server_ciphers on; # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months) add_header Strict-Transport-Security max-age=15768000; # OCSP Stapling --- # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on; ## verify chain of trust of OCSP response using Root CA and Intermediate certs ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates; resolver <IP DNS resolver>; .... }
一旦完成了所有的testing,就转到ssllabs并进行testing。 如果你错过了什么,你会看到还有什么需要做的。
第一部分:
SSLCertificateFile /etc/apache2/ssl/11-2013/09********ss.crt
这是您的网站的公共证书。 这是您将重新将SHA1更改为SHA2的人 。
SSLCertificateKeyFile /etc/apache2/ssl/11-2013/server.key
这是您的Web服务器的私人证书。
SSLCertificateChainFile /etc/apache2/ssl/11-2013/gd_bundle.crt
这是中间证书包,将您的Web服务器证书汇总到godaddy的根权限(因为它们的根证书默认情况下不受浏览器的信任)
这给出了如何configurationNGINX来使用中间证书链(在Apache服务器上需要这样做的情况下,您最需要这么做)的说明: nginx docs:configurationHTTPS服务器
您不会更改NGINXconfiguration文件中的证书configuration。 一旦证书有能力,你可以在configuration文件中打开这些能力(根据来自fvu的回答),但首先你需要基本上“升级”你的证书本身。 GoDaddy有一些可能对此有帮助的文章,第一篇只是描述当你做这个改变时你在做什么: https : //www.godaddy.com/help/rekey-certificate-4976第二个告诉你如何实际上使用他们的服务: https : //www.godaddy.com/help/rekey-certificate-4976 。
在完成所有这些工作后,您可以使用ssllabs进行testing,但只有当您的新站点启动并在DNS中的正确主机名上运行时才能正常工作(如果您仍然需要站点,则可能不需要这样做在Apache上,直到完成)。 假设你在linux / unix机器的某个地方有root用户,你可以使用openssl来testing它:
input您的新NGINX服务的IP地址作为您要testing的站点的名称。 因此,您的主站点保持在Apache的位置,您只能告诉您的本地机器在NGINX站点上find它。 完成之后,运行以下命令并查看输出内容:
openssl s_client -connect hostname:port
或者使用这个命令,它直接指向你正在检查的内容: https : //stackoverflow.com/questions/26473076/how-do-i-check-if-my-ssl-certificate-is-sha1-or-sha2 -on最命令行