SSL 证书购买以及Nginx配置相关问题
使用https的网站越来越多了,不仅可以增加网络数据传输的安全性,还行增加搜索引擎的友好度。越来越多的个人站长也开始使用https,我们要赶得上趋势啊。
使用https的第一个问题就是要有CA证书,使用免费的,还是收费的?哪种证书比较好?哪家的证书比较便宜?下面是搜集到一些知识,学习和备用。
很多付费的证书机构会提供限时的免费证书来体验,免费的其实也很多,基本都有时间上的限制。
支持单个域名的最便宜,支持多个域名,和支持任意自域名的会贵很多。
购买网站
证书的购买网站,一般都卖很多种
- rapidsslonline SSL 证书的购买与 Nginx 下的配置
- startssl.com 可以申请免费证书 1年的
- Namecheap
- SSLs 感觉还不错
- cheapssl
- gogetssl 有便宜证书,也有免费的
- GoDaddy 就是那个卖域名比较火的网站
- 其他很多
证书颁发机构,前面的几种见到的更多,什么类型和流量的网站推荐用什么还不是很了解
- Let’s Encrypt:免费,快捷,支持多域名(不是通配符),三条命令即时签署+导出证书。缺点是暂时只有三个月有效期,到期需续签
- StartSSL 免费DV证书
- Comodo PositiveSSL:便宜,单年9美刀,如果签三年大概每年4至5美刀。可签署ECC SSL证书
- RapidSSL:单年签署价格同PositiveSSL,并没有什么优缺点
- 沃通(Wosign)免费DV证书, 最近比较火,不推荐。 Github事件已经失去信任
- globalsign
- VeriSign
- geotrust
- Symantec 据说比较高级,也比较贵
- 其他很多
这个网站可以查查 IDC点评,看起来大部分都是面向企业的。
证书相关知识
影响证书的价格的一些因素
- 证书的等级 DV OV EV 三种
- 是否支持多域名 支持单个域名的最便宜,支持多个域名,和支持任意自域名的会贵很多。
- 支持多服务器
- 加密强度
证书的等级
CA机构颁发的证书有3种类型:
- 域名型SSL证书(DV SSL):信任等级普通,只需验证网站的真实性便可颁发证书保护网站;
- 企业型SSL证书(OV SSL):信任等级强,须要验证企业的身份,审核严格,安全性更高;
- 增强型SSL证书(EV SSL):信任等级最高,一般用于银行证券等金融机构,审核严格,安全性最
最低等级的有免费的,付费的一年几美元也能买到
错误记录
NGINX配置Let’s Encrypt证书,Firefox无法打开
使用 certbot 这个工具来生成 Let's Encrypt的证书,部署到nginx在 firefox 浏览器无法打开显示 sec_error_unknown_issuer, 说没有信任的中间证书提供商。
接着就在 SSL测试在线测试网站 ssltest 进行测试,会有这么一个警告 This server's certificate chain is incomplete. Grade capped to B.
然后google了下,看到别人提到 cert.pem chain.pem fullchain.pem 这个几个文件才想起来(certbot自动生成),是不是配的又问题呢?
于是 cert.pem(证书链残缺了) 替换成 fullchain.pem 就好了。
ssl_certificate /etc/letsencrypt/live/blog.orangleliu.info/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/blog.orangleliu.info/privkey.pem;
- 1
- 2
- 1
- 2
Nginx ssl相关的配置
server { listen 443 ; server_name blog.orangleliu.info; ssl on; ssl_certificate /etc/letsencrypt/live/blog.orangleliu.info/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/blog.orangleliu.info/privkey.pem; ssl_protocols TLSv1.2 TLSv1.1 TLSv1; ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA512:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:ECDH+AESGCM:ECDH+AES256:DH+AESGCM:DH+AES256:RSA+AESGCM:!aNULL:!eNULL:!LOW:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS; ssl_prefer_server_ciphers on; ssl_dhparam /etc/ssl/dhparam.pem; keepalive_timeout 70; ssl_session_cache shared:SSL:2m; ssl_session_timeout 2m; add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains'; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header HOST $http_host; proxy_set_header X-NginX-Proxy true; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:9988; proxy_redirect off; } location ~ ^/(shared/|built/) { root /www/ghost/core; access_log off; expires 7d; } location ~ ^/(content/images/) { root /www/ghost; access_log off; expires 7d; } location ~ ^/assets { root /www/ghost/content/themes/grayliner ; access_log off; expires 7d; } } server { listen 80; server_name blog.orangleliu.info; rewrite ^/(.*)$ https://$server_name$request_uri permanent; }
其他
一行命令查看某个网站ssl证书的过期时间,这是 运维开发群 爷的分享, Centos可以运行
# echo | openssl s_client -connect blog.orangleliu.info:443 2>/dev/null | openssl x509 -enddate -noout notAfter=Jan 26 06:57:00 2017 GMT
via.http://blog.csdn.net/orangleliu/article/details/57088623