SSL 证书

由于几大证书商已经普遍不再签发 edu.cn 的免费证书,因此如若想使用免费证书,则只能选择 Lets encrypt 方案.

本章介绍一个基于 shell 脚本的 lets encrypt 自动续签方案,没有依赖,在不同服务器环境下比较通用.

如果您有一定的 linux 运维基础,建议进一步了解一下 lets encrypt 官方推荐的证书签发工具 certbot

lets encrypt 方案

下载签发脚本

下载地址 统一安装在 /home 路径上,重命名为 /home/letsencrypt

签发证书

首先确认服务器已经对外开放 80 端口,并且需要签发证书的域名(例如 idp.xxx.edu.cn),已经正确解析到该服务器的外网 ip 上。

建校验目录

mkdir /var/www/dehydrated

映射校验 url 到校验目录

该目录将用于临时生成用于 lets encrypt 自动校验的文件

apache

修改 /etc/httpd/conf/httpd.conf 增加下面内容

Alias /.well-known/acme-challenge /var/www/dehydrated
<Directory /var/www/dehydrated>
        Options None
        AllowOverride None

        # Apache 2.x
        <IfModule !mod_authz_core.c>
                Order allow,deny
                Allow from all
        </IfModule>

        # Apache 2.4
        <IfModule mod_authz_core.c>
                Require all granted
        </IfModule>
</Directory>
nginx
  location ^~ /.well-known/acme-challenge {
    alias /var/www/dehydrated;
  }
重启服务
service httpd restart

or

service nginx restart
签发证书

如果网络失败之类的,重复多试几次。

/home/letsencrypt/dehydrated --register --accept-terms
/home/letsencrypt/dehydrated -c -d idp.xxx.edu.cn
部署证书
修改证书路径-apache

修改 /etc/httpd/conf.d/ssl.conf 中下面内容,即证书路径更改 letsencryt 中的证书

注意当 apache 版本较低时必须同时配置中级证书,即使证书文件中已经包含了中级证书的内容。

apache < 2.4.8
SSLCertificateFile /home/letsencrypt/certs/idp.xxx.edu.cn/fullchain.pem
SSLCertificateChainFile /home/letsencrypt/certs/idp.xxx.edu.cn/chain.pem
SSLCertificateKeyFile /home/letsencrypt/certs/idp.xxx.edu.cn/privkey.pem
apache >= 2.4.8
SSLCertificateFile /home/letsencrypt/certs/idp.xxx.edu.cn/fullchain.pem
SSLCertificateKeyFile /home/letsencrypt/certs/idp.xxx.edu.cn/privkey.pem
修改证书路径-nginx

修改对应配置文件中下面内容,即证书路径更改 letsencryt 中的证书

ssl_certificate /home/letsencrypt/certs/idp.xxx.edu.cn/fullchain.pem;
ssl_certificate_key /home/letsencrypt/certs/idp.xxx.edu.cn/privkey.pem;
重启 apahce 服务
service httpd restart

or

service nginx restart
自动续签脚本

crontab -e 中增加下面内容,每天尝试更新续签。

15 12 * * * (/home/letsencrypt/dehydrated -c -d idp.xxx.edu.cn) > /tmp/lets_encrypt.log 2>&1
15 4 * * * (/sbin/service httpd restart) > /tmp/http.log 2>&1
注意事项

部署中注意替换 idp.xxx.edu.cn 为学校服务器的实际域名

results matching ""

    No results matching ""