Apache环境服务器配置Let's Encrypt免费SSL证书及自动续期方法

如今越来越多的网站开始使用SSL证书,实现HTTPS网址形式,如果我们是英文网站更需要用到这样格式的HTTPS网址,因为根据谷歌搜索结果提示到如果用到SSL证书的在同等条件下排名结果是有靠前可能的。我们可以购买SSL证书,也可以使用免费证书,Let's Encrypt目前已经公测阶段,这个免费证书是得到众多主流商家推荐和支持的,力求普及SSL证书在网站中的应用。

于是我们需要在自己网站架设SSL证书可以如何做呢?在这篇文章中,我将整理利用APACHE环境安装SSL证书的方法。

第一、安装GIT

apt-get update
    apt-get -y install git

第二、获取证书

git clone https://github.com/letsencrypt/letsencrypt

第三、进入目录生成证书

cd letsencrypt

./letsencrypt-auto --apache -d hostusvps.com

如果只签一个域名,按照上面的命令就可以了
他会自动安装插件,然后你需要输入邮箱来用于证书的找回。同时还会要求你选择是否同时开启Http和https和是否开启强制https。

这里需要注意的一个问题,因为Let's Encrypt证书是免费90天的,我们需要提前免费续约,可以继续用90天,这里有一个脚本可以自动续约。

脚本:http://www.hostusvps.com/script/le-renew.sh

我们可以看到脚本的内容:

#!/bin/bash
domain=$1
le_path='/opt/letsencrypt'
le_conf='/etc/letsencrypt'
exp_limit=30;

get_domain_list(){
        certdomain=$1
        config_file="$le_conf/renewal/$certdomain.conf"
        
        if [ ! -f $config_file ] ; then
                echo "[ERROR] The config file for the certificate $certdomain was not found."
                exit 1;
        fi

domains=$(grep --only-matching --perl-regex "(?<=domains \= ).*" "${config_file}")
        last_char=$(echo "${domains}" | awk '{print substr($0,length,1)}')

if [ "${last_char}" = "," ]; then
                domains=$(echo "${domains}" |awk '{print substr($0, 1, length-1)}')
        fi

echo $domains;
}

if [ -z "$domain" ] ; then
        echo "[ERROR] you must provide the domain name for the certificate renewal."
        exit 1;
fi

cert_file="/etc/letsencrypt/live/$domain/fullchain.pem"

if [ ! -f $cert_file ]; then
        echo "[ERROR] certificate file not found for domain $domain."
        exit 1;
fi

exp=$(date -d "`openssl x509 -in $cert_file -text -noout|grep "Not After"|cut -c 25-`" +%s)
datenow=$(date -d "now" +%s)
days_exp=$(echo \( $exp - $datenow \) / 86400 |bc)

echo "Checking expiration date for $domain..."

if [ "$days_exp" -gt "$exp_limit" ] ; then
        echo "The certificate is up to date, no need for renewal ($days_exp days left)."
        exit 0;
else
        echo "The certificate for $domain is about to expire soon. Starting renewal request..."
        domain_list=$( get_domain_list $domain )
        "$le_path"/letsencrypt-auto certonly --apache --renew-by-default --domains "${domain_list}"
        echo "Restarting Apache..."
        /usr/sbin/service apache2 reload
        echo "Renewal process finished for domain $domain"
        exit 0;
fi

我们可以将上面的脚本放到定时文件中,比如2个月自动更新一次就可以继续续约。或者我们手工./le-renew.sh [需要续约SSL的域名],执行一样可以续约90天。

上一篇:hadoop用put上传文件时报错


下一篇:[转]人人网首页拖拽上传详解(HTML5 Drag&Drop、FileReader API、formdata)