从零到一快速搭建个人博客网站(域名备案 + h(2)

一般情况证书是需要购买的,但是也有一些平台提供了免费证书,阿里云也有一年的免费证书,但是阿里云证书只能单个域名使用,如果要通配符证书是需要付费的。而Let’s Encrypt 证书即可以免费申请证书,又支持通配符,是个人开发者的上选。

这里我们通过github项目配置免费证书(也可以手动安装,不过自动安装比较方便,下面两种方式都会提到):letencrypt-certbot
       使用此项目前我们配置一下前置环境:certbot 和 git

安装git yum install git 安装certbot # 安装certbot,中间需要输入y确认 yum install epel-release yum install certbot # 查看版本,如果安装正常会显示版本号 certbot --version 申请证书

特别注意的是,这里需要主机把80端口和443端口开放,上面我们已经开放了80端口,这里开放443端口就行了

# 配置防火墙,注意,阿里云需要同时配置安全组443端口 # 开放443端口 firewall-cmd --permanent --add-port=443/tcp #重启防火墙(修改配置后要重启防火墙) firewall-cmd --reload

重要提示:为避免遇到操作次数的限制,加入 dry-run 参数,可以避免操作限制,等执行无误后,再进行真实的 renew 操作

手动安装证书+手动续期 # 申请证书,需要填入你的邮箱和域名, --dry-run 测试使用不会生成证书,我们先用这个命令看是否成功 certbot certonly --email 你的邮箱@qq.com -d *.域名.cn -d 域名.cn --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory --dry-run # 如果没有错误信息,去掉--dry-run真正生成证书 certbot certonly --email 你的邮箱@qq.com -d *.域名.cn -d 域名.cn --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory # 手动续期 certbot renew

安装过程中,需要确认选项,讲一下手动安装的重点:

从零到一快速搭建个人博客网站(域名备案 + h


安装成功后显示:

从零到一快速搭建个人博客网站(域名备案 + h

注意:证书90天后过期,我们手动续期的话比较麻烦,而且每次需要手动去DNS解析列表创建对应的记录,所以推荐下面的自动续期方式

通过apikey 和secret生成证书+自动续期

首先获取api key 和secret:阿里云 API key 和 Secret 官方申请文档,这种方式其实是利用你开放的api key调用阿里云提供的接口,所以保险起见我们创建一个权限很小的用户就行了。

流程:
       1、为了安全,我们需要先创建RAM用户,配置一个权限小的用户;
       2、给新创建的用户配置 AliyunDNSFullAccess(管理云解析(DNS)) 的权限;
       3、获取apikey 和 secret。

# 新建一个目标,拉取项目 mkdir /home/certbot cd /home/certbot git clone https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au cd certbot-letencrypt-wildcardcertificates-alydns-au chmod 0777 au.sh # 编辑au.sh,加入我们上面申请的key vi au.sh #填写阿里云的AccessKey ID及AccessKey Secret #如何申请见https://help.aliyun.com/knowledge_detail/38738.html ALY_KEY="" ALY_TOKEN="" # 运行命令,加上--dry-run 测试,如果没问题去掉 --dry-run 执行,脚本目录就是我们上面创建的 /home/certbot/certbot-letencrypt-wildcardcertificates-alydns-au certbot certonly -d *.yangwq.cn -d yangwq.cn --manual --preferred-challenges dns-01 --email 1075976874@qq.com --manual-auth-hook "/脚本目录/au.sh python aly add" --manual-cleanup-hook "/脚本目录/au.sh python aly clean" --dry-run; # 配置自动续期,使用crontab实现 vi /etc/crontab # 加入以下命令,这个命令就是每周执行一次脚本,如果需要续期就会自动更新 0 0 * * 0 root certbot renew --manual --preferred-challenges dns --deploy-hook "docker restart nginx" --manual-auth-hook "/脚本目录/au.sh python aly add" --manual-cleanup-hook "/脚本目录/au.sh python aly clean" --manual-public-ip-logging-ok;

到这一步我们证书生成成功了,同样存放在 /etc/letsencrypt/live/yangwq.cn/ 目录,注意这里的文件是软链接,我们实际上的文件在 etc/letsencrypt/archive/yangwq.cn 目录

nginx安装证书 # 编辑conf.d 下的default.conf server { listen 80 default; server_name yangwq.cn; # http自动转https rewrite ^(.*)$ https://$host$1 permanent; } server { listen 443 ssl; server_name yangwq.cn; # 配置站点证书文件地址 ssl_certificate /etc/letsencrypt/archive/yangwq.cn/fullchain1.pem; # 配置证书私钥 ssl_certificate_key /etc/letsencrypt/archive/yangwq.cn/privkey1.pem; # 配置服务器可使用的加密算法 ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; # 指定服务器密码算法在优先于客户端密码算法时,使用 SSLv3 和 TLS 协议 ssl_prefer_server_ciphers on; # ssl 版本 可用 SSLv2,SSLv3,TLSv1,TLSv1.1,TLSv1.2 # ie6 只支持 SSLv2,SSLv3 但是存在安全问题, 故不支持 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 配置 TLS 握手后生成的 session 缓存空间大小 1m 大约能存储 4000 个 session ssl_session_cache shared:SSL:50m; # session 超时时间 ssl_session_timeout 1d; # 负载均衡时使用 此处暂时关闭 详情见 https://imququ.com/post/optimize-tls-handshake.html # 1.5.9 及以上支持 ssl_session_tickets off; # 浏览器可能会在建立 TLS 连接时在线验证证书有效性,从而阻塞 TLS 握手,拖慢整体速度。OCSP stapling 是一种优化措施,服务端通过它可以在证书链中封装证书颁发机构的 OCSP(Online Certificate Status Protocol)响应,从而让浏览器跳过在线查询。服务端获取 OCSP 一方面更快(因为服务端一般有更好的网络环境),另一方面可以更好地缓存 以上内容来自 https://imququ.com/post/my-nginx-conf-for-wpo.html # 1.3.7 及以上支持 ssl_stapling on; ssl_stapling_verify on; # 根证书 + 中间证书 ssl_trusted_certificate /etc/letsencrypt/archive/yangwq.cn/fullchain1.pem; # HSTS 可以告诉浏览器,在指定的 max-age 内,始终通过 HTTPS 访问该域名。即使用户自己输入 HTTP 的地址,或者点击了 HTTP 链接,浏览器也会在本地替换为 HTTPS 再发送请求 相关配置见 https://imququ.com/post/sth-about-switch-to-https.html add_header Strict-Transport-Security max-age=60; # 在此填写原本 http 协议中的配置 location / { # 配置转发到本机的halo端口,注意这里的ip应该是机器的ip,不能使用127.0.0.1,使用ip addr 查看本机ip proxy_pass :8080; } error_page 500 502 503 504 /50x.html; location = /50x.html { #重定向错误页面到 /50x.html root /usr/share/nginx/html; } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/83555af37ad485b9b526bf470891e5bd.html