LinMao's Blog
学习科研记录与分享!

用自签名SSL证书和Cloudflare实现Https

之前是用付费的SSL证书实现https访问,最近证书过期了。谷歌要求.dev域名必须https,所以网站没法访问了。鼓捣了一下,用自签名SSL证书和Cloudflare实现https,并且一劳永逸。

Cloudflare支持

Cloudflare上面支持四种程度的SSL模式: Off:关闭 SSL,使用http访问; Flexible:从Browser到Cloudflare加密(https或者http访问),Cloudflare到server不加密(http访问); Full:全部加密,需要在服务器上部署证书,但 CloudFlare 不会检查证书的有效性(均为https访问); Full(Strict):严格模式,也就是全部加密,而且 CloudFlare 会检查服务器上的证书是否有效(均为https访问)。 Full(Strict)模式下不能部署自签名的证书,需要一个有效机构颁发的证书,例如 letsencrypt 的证书,这些证书或者收费或者有效期很短。Full模式下使用自签名证书就不存在这个问题,可以随意签发长期证书。

安装SSL

sudo apt install openssl

签发自签名证书

接下来,以给linmao.dev签发自签名证书。
  1. 生成工作目录(用来存放证书和中间文件)
    mkdir cert_folder
    cd cert_folder
    
  2. 创建一个私钥ca.key,为下一步穿件CA证书做准备
    openssl genrsa -des3 -out ca.key 2048
    
    执行命令后,会让输入pass phrase,随便输入什么就行,只是一个临时密码,下一步会用到;
  3. 生成CA根证书(公钥)
    openssl req -new -x509 -days 7305 -key ca.key -out ca.crt
    
    -days后面7305表示证书有效天数,这里直接设置成20年 执行命令后,需要输入上一步设置的临时密码;组织地区信息随便填写,其中Common Name填写需要签发的域名,填写根域名linmao.dev,就直接签发根域的CA证书;
  4. 接着生成一个给泛域名的私钥
    openssl genrsa -des3 -out linmao.dev.pem 1024
    
    执行命令与上面创建私钥一样,依旧需要设置临时密码以备下面使用;
  5. 解密私钥
    openssl rsa -in linmao.dev.pem -out linmao.dev.key
    
  6. 生成签名请求
    openssl req -new -key linmao.dev.pem -out linmao.dev.csr
    
    输入命令以后,随便填写组织地区信息,其中Common Name填写泛域名(*.linmao.dev),这样生成的证书可以供所有子域使用;
  7. 修改文件准备签名 现在需要修改文件签名,没有这一步会报错,创建一些中间文件就可以执行签名
    # 在当前目录下新建文件夹demoCA,文件夹名称由/etc/ssl/openssl.cnf中dir = ./demoCA所确定的
    mkdir -p demoCA/newcerts
    touch demoCA/index.txt
    touch demoCA/serial
    echo "01" > demoCA/serial
    
  8. 执行签名
    openssl ca -policy policy_anything -days 7305 -cert ca.crt -keyfile ca.key -in linmao.dev.csr -out linmao.dev.crt
    
    最后生成一个linmao.dev.crt文件,把ca.crt中的内容复制粘贴到linmao.dev.crt文件内容后面,就得到签发后的证书。
最后只需要用到上面生成的linmao.dev.crt(网站证书)和linmao.dev.key(网站私钥),将这两个文件上传到服务器使用。

配置nginx

找到网站对应的nginx配置文件,大概在/usr/local/nginx/conf/vhost目录下,修改对应的网站配置文件:
# 在listen 80下面添加对443端口的监听
listen 443;
ssl on;
ssl_certificate /Path to File/linmao.dev.crt;
ssl_certificate_key /Path to File/linmao.dev.key;
修改完成以后执行下面命令检查nginx配置文件是否有错
nginx -t
然后重启nginx,完成网站证书绑定。    
Reference: 用自签名 SSL 证书配合 CloudFlare 免费 SSL 构建全站 HTTPS Can't load /root/.rnd into RNG
 
赞(3) 打赏
转载请注明出处:LinMao's Blog(林茂的博客) » 用自签名SSL证书和Cloudflare实现Https

评论 抢沙发

静态归档版本,评论功能已关闭。
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

LinMao's Blog(林茂的博客)

了解更多联系我们

觉得文章有用就打赏一下作者吧~

支付宝扫一扫打赏

支付宝

微信扫一扫打赏

微信