maming
CentOS7+nginx配置免费ssl网站证书

一个小博客也没啥重要内容,本来不想搞证书,最近竟然发现页面有被劫持篡改的情况,折腾一下吧

1. 开放服务器443 端口

https会使用443端口,所以无论是centos的防火墙,还是云主机提供商的防火墙,都必须开放443端口

2. 暂时停掉nginx服务

# systemctl stop nginx

后面第3步操作会临时占用80端口,如果nginx等其他服务占用该端口,将导致无法生成证书
猜测下面工具的实现过程是用-d的域名,临时启动了一个web服务器用于向机构申请证书

3. 申请证书

let’s encrypt是一家提供免费证书的服务商,可以通过其提供的脚本,快速生成证书,把email-d参数改成你自己的邮箱和域名信息

# yum update -y nss curl libcurl
# git clone https://github.com/letsencrypt/letsencrypt
# cd letsencrypt/
# ./letsencrypt-auto certonly --standalone --email xxx@163.com -d maming.org -d www.maming.org

成功的话,会在/etc/letsencrypt/live/生成对应的key,例如:

# tree /etc/letsencrypt/live/
/etc/letsencrypt/live/
└── maming.org
    ├── cert.pem -> ../../archive/maming.org/cert1.pem
    ├── chain.pem -> ../../archive/maming.org/chain1.pem
    ├── fullchain.pem -> ../../archive/maming.org/fullchain1.pem
    ├── privkey.pem -> ../../archive/maming.org/privkey1.pem
    └── README

1 directory, 5 files

到此证书已经申请成功

4. nginx配置该证书

在你原有配置里面加入ssl开头的那些项目
后面加了一个80的跳转,为了当用户使用http://访问时,可以自动跳转到https://

# cat /etc/nginx/conf.d/maming.org.conf
server {
    listen  443 ssl;                                                            # 此处需要改成443,且加上ssl
    server_name maming.org www.maming.org;

    ssl on;
    ssl_certificate     /etc/letsencrypt/live/maming.org/fullchain.pem;         # 此处改成你上面生成的key文件地址
    ssl_certificate_key /etc/letsencrypt/live/maming.org/privkey.pem;           # 此处改成你上面生成的key文件地址
    ssl_session_timeout 5m;
    ssl_protocols SSLv3 TLSv1;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
    ssl_prefer_server_ciphers on;

    location / { 
        index index.html;
    }
}

server {                                                                        # 额外增加一个80的301跳转
    listen   80;
    server_name maming.org www.maming.org;
    return 301 https://$server_name$request_uri;
}

重启nginx

# systemctl restart nginx

到此证书已经导入成功了,通过浏览器访问,浏览器的地址栏应该已经显示绿锁+https的显示了

5. 证书续期

该免费证书有效期为3个月,可以通过下面的命令续期,你可以把它加入到crontab里面自动执行

# ./certbot-auto certonly --renew-by-default --email xxx@163.com -d maming.org -d www.maming.org

6. 其他问题

现象: 浏览器地址栏没有绿锁,点开感叹号后,显示的信息是您与此网站之间建立的链接并非完全安全
解决: 检查你网站的html代码,如果有除<a href>标签以外的地方引用了http://的资源,就会标示为非完全安全
比如引用的任何.js/.css/.img等,把他们找出来,想办法换成https://

昵称
网址
导航