自由的SSL证书 要不要
最近调研SSL,对于自由的SSL证书打算研究下,于是有了这篇。
之所以叫自由,因为不喜欢免费,因为免费总感觉要付出代价。
获取 letsencrypt SSL证书 参考:
https://imququ.com/post/letsencrypt-certificate.html
# 创建一个目录
mkdir /root/ssl# 创建一个RSA私钥
openssl genrsa 4096 > account.key# 创建另一个RSA私钥
openssl genrsa 4096 > domain.key#创建ECC私钥
openssl ecparam -genkey -name secp256r1 | openssl ec -out domain.key
openssl ecparam -genkey -name secp384r1 | openssl ec -out domain.key#生成CSR文件,有两种方式,我用的是第二种,但是第一种可以一次多申请几个,可以稍后测试
openssl req -new -sha256 -key domain.key -subj "/" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:yoursite.com,DNS:www.yoursite.com")) > domain.csr
openssl req -new -sha256 -key domain.key -out domain.csr注意,记得系统安装yum install openssl# 配置验证服务,为啥要这么说呢,因为letsencrypt给的也是DV,也就是域名验证,我们运行软件申请的时候,本身python脚本会在本地写一个随机数到一个随机文件,它们官方会从远端经过公网DNS解析并去获取这个文件,如果一致,就说明这个站点是我们的,也就可以申请证书了。
mkdir ~/www/challenges/
# 另外,还需要两个步骤,最后会说明为啥要这两个步骤。
mkdir /root/www/challenges/.well-known/ -p
ln -s /root/www/challenges/ /root/www/challenges/.well-known/acme-challenge# 接下来我们就要下载python脚本,并去申请证书了
wget https://raw.githubusercontent.com/diafygi/acme-tiny/master/acme_tiny.py# 在执行下面之前,我们可以打开网站,最简单的就是使用python
python -m SimpleHTTPServer 80
python acme_tiny.py --account-key ./account.key --csr ./domain.csr --acme-dir ~/www/challenges/ > ./signed.crt# 如果一切正常,我们会看到signed.crt这个就是我们的证书了。# 另外,我们还需要letsencrypt的中间证书,我也不知道啥意思,反正是需要一个官网的东西
wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem
cat signed.crt intermediate.pem > chained.pem
wget -O - https://letsencrypt.org/certs/isrgrootx1.pem > root.pem
cat intermediate.pem root.pem > full_chained.pem# 其中chained.pem就是我们需要的了# 配置SSL证书网站
server {
listen 443 ssl;
# 这个SSL相当重要
server_name soft.ops.ac.cn;
#设置长连接
keepalive_timeout70;
ssl_certificate/etc/nginx/ssl/chained.pem;
ssl_certificate_key /etc/nginx/ssl/domain.key;
ssl_protocolsTLSv1 TLSv1.1 TLSv1.2;
#ssl_ciphersHIGH:!aNULL:!MD5;
location / {
root /data/soft/soft;
autoindex on;
}
}
踩到的坑
- 这个是采用第二种方式生成CSR,注意,hostname那个地方我用了两个,其实这么写不科学
文章图片
- 这个地方提示无法下载,其实有两个原因,1. 官方会从国外去解析我们的域名,有时候会有问题,所以这种情况多试几次就好了,再有就是看日志,看http有没有人来拿东西 2. 就是我们的目录没有,注意看提示,脚本虽然是在根目录写,但是取的时候却加入了两个目录,所以之前也有介绍,需要多两个步骤,一个是创建目录,一个是添加软连接
文章图片
- 【自由的SSL证书 要不要】这个地方就是我们使用的内网,会报错,没有一个公网IP地址是不成的
文章图片
- 这个地方就是我们在生成CSR的时候,输入方式不对,后来改成只写一个了,其实是可以写多个的,只是我不知道
文章图片
- 看个页面,这样就好了么~
文章图片
- 如果收到了SSL 接收到一个超出最大准许长度的记录。有可能是nginx中listen 443 后边没有加SSL哦。
- letsencrypt提供的DV验证,另外,Symantec提供的起码是OV,也就是说咱们的这个证书是不会显示出来公司名字的哦
- 貌似目前已经提供了ECC,要知道ECC在提供安全性的时候,还减少了证书的大小,会提高效率,具体数字未知
- 这个证书只有90天有效期哦,不过可以做到自动化,不过我是在内网使用,所以就不大好搞了,当然也能搞。
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量