美文网首页
亚马逊服务器上部署SSL证书

亚马逊服务器上部署SSL证书

作者: zhanglx | 来源:发表于2018-08-03 18:14 被阅读0次

    最近工作需要在搭网站的https,先后使用了亚马逊和Let’s Encrypt的ssl证书。

    亚马逊的SSL证书申请

    亚马逊的服务器可以免费使用1年,国内访问速度还可以
    亚马逊的ssl证书是有亚马逊管理的不能下载,只能部署在ELB上面(反正我没有找到怎么下载( ̄. ̄) )

    1、打开aws顶部的服务,搜索“Certificate Manager”

    2、请求证书=>请求公有证书

    3、添加域名

    image

    多个子域名,可以一起提交

    4、验证方法(DNS验证, 邮箱验证),建议邮箱验证

    4.1、DNS验证需要去修改dns,添加cname,设置麻烦,验证速度慢

    验证需要填写CNAME 名_x.abc.com(_x加密串),设置CNAME时,一般是填写_x,后面的abc.com省略。

    我填完半小时回来看一个可以,另一个不行修改了等了2个小时。申请到通过花了4个小时。。。这个可能跟我填错有关。验证是aws定时发起的。

    image
    4.2、邮箱验证速度很快,只要打开邮箱收邮件就可以了

    发送邮件的邮箱如下图所示,我这边用admin@abc.com,原本已经使用了QQ的企业邮箱,所以直接收邮件就可以了,按邮箱指示操作就可以了

    如果没有邮箱,可以尝试使用QQ的企业邮箱,来接邮件(本人没试过)

    image

    5、配置ssl证书

    审核通过之后,你会发现这个没有下载证书的位置,各种中文文档也没有如何配置使用的的说明。

    em....,我找了一下午,最后在google发现是配置在ELB上的。英语不好,做不了程序员了。

    6、开始设置ELB:

    进入EC2管理界面,负载均衡器就是ELB,创建一个HTTP/HTTPS的均衡器

    image

    侦听器,可以理解为nginx的listen 80,如果有https可以增加/修改成443。
    可用区,我还没具体用上,使用选择最大的两个。

    image

    这一步,就可以选择你申请的证书了。

    然后下一步配置安全规则,记得安全规则需要开启对应的端口,80或者443。

    image

    配置路由,目标组就是配置web服务器的被映射的端口。
    请求先到ELB的80/443端口,再转的web服务器的80或者其他端口。

    ELB有个好处,配置了ssl,映射到web服务器时就不用再配置https了,ELB已经帮忙验证ssl了。

    这里还有可以配置web服务器的状态监测。

    image

    注册目标,配置接收映射的服务器。如果“已注册目标”为空,访问网站就会503。

    最后审核过了,就配置上去了。
    不过这时还没完成,重新进入负载均衡器的管理界面,点击刚才创建的均衡器。

    image

    复制下面的DNS,放浏览器打开网页看看,可以看到正常网页,表示可以了。
    如果不行看看,看看均衡器和目标群组配置是否正确
    网页可以正常打开,就到域名管理后台是配置CNAME,就可以了。

    我这边遇到了无法解决问题。
    godaddy禁止CNAME主域名,就是无法将abc.com CNAME 到 amazonaws.com。
    另一个域名运营商是可以的。

    如果使用亚马逊的ssl证书,要注意主域名的问题,二级域名就无所谓了。
    PS:亚马逊的的ELB只有15G的免费流量;

    因为无法解析主域名的问题,我重新去找ssl证书

    Let’s Encrypt 证书申请使用

    我使用来certbot申请证书

    github: https://github.com/certbot/certbot
    官网: https://certbot.eff.org/

    先安装certbot

    wget https://dl.eff.org/certbot-auto
    chmod a+x certbot-auto
    

    申请证书

    sudo ./certbot-auto certonly --standalone --email admin@abc.com -d abc.com -d www.abc.com
    

    执行上面指令,按提示操作。
    Certbot 会启动一个临时服务器来完成验证(会占用80端口或443端口,因此需要暂时关闭 Web 服务器),然后 Certbot 会把证书以文件的形式保存,包括完整的证书链文件和私钥文件。
    文件保存在 /etc/letsencrypt/live/ 下面的域名目录下。

    需要把要申请证书的域名先解析到这台服务器上,才能申请。

    修改nginx配置

    server{
        listen 80;
        listen 443 ssl;
    
        ssl_certificate /etc/letsencrypt/live/abc.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/abc.com/privkey.pem;
    
        server_name abc.com www.abc.com;
        root /web/abc.com/;
    }
    

    证书自动续期

    证书有效期是3个月,把下面命令加到crontab,每2个月执行一次。

    certbot-auto renew //刷新指令
    

    自动读取nginx配置申请证书

    certbot-auto --nginx 会自动读取nginx的配置,按提示申请证书。

    下面命令会自动创建定时任务

    certbot-auto renew --dry-run 
    

    不重启申请证书

    修改nginx配置,增加

    location ^~ /.well-known/acme-challenge/ {
       default_type "text/plain";
       root     /usr/share/nginx/html;
    }
    

    重启nginx,执行 certbot-auto certonly --webroot -w /usr/share/nginx/html/ -d www.abc.com

    相关文章

      网友评论

          本文标题:亚马逊服务器上部署SSL证书

          本文链接:https://www.haomeiwen.com/subject/dchuvftx.html