自由的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_timeout   70;
        ssl_certificate     /etc/nginx/ssl/chained.pem;
        ssl_certificate_key /etc/nginx/ssl/domain.key;
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        #ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        root /data/soft/soft;
        autoindex on;
    }
}

踩到的坑

  • 这个是采用第二种方式生成CSR,注意,hostname那个地方我用了两个,其实这么写不科学
    这里写图片描述

  • 这个地方提示无法下载,其实有两个原因,1. 官方会从国外去解析我们的域名,有时候会有问题,所以这种情况多试几次就好了,再有就是看日志,看http有没有人来拿东西 2. 就是我们的目录没有,注意看提示,脚本虽然是在根目录写,但是取的时候却加入了两个目录,所以之前也有介绍,需要多两个步骤,一个是创建目录,一个是添加软连接
    这里写图片描述

  • 这个地方就是我们使用的内网,会报错,没有一个公网IP地址是不成的
    这里写图片描述

  • 这个地方就是我们在生成CSR的时候,输入方式不对,后来改成只写一个了,其实是可以写多个的,只是我不知道
    这里写图片描述

  • 看个页面,这样就好了么~
    这里写图片描述

  • 如果收到了SSL 接收到一个超出最大准许长度的记录。有可能是nginx中listen 443 后边没有加SSL哦。

 总结

  1. letsencrypt提供的DV验证,另外,Symantec提供的起码是OV,也就是说咱们的这个证书是不会显示出来公司名字的哦
  2. 貌似目前已经提供了ECC,要知道ECC在提供安全性的时候,还减少了证书的大小,会提高效率,具体数字未知
  3. 这个证书只有90天有效期哦,不过可以做到自动化,不过我是在内网使用,所以就不大好搞了,当然也能搞。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值