Home > Learning > Free Https ‘Let’s Encrypt’ On Httpd2.4.9,CentOS7

Free Https ‘Let’s Encrypt’ On Httpd2.4.9,CentOS7

最近出来的免费的ssl证书,可以用来装个逼。

1.安装mod_ssl,openssl

yum -y install git mod_ssl openssl

2.下载Let’s Encrypt并获取证书

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
chmod +x letsencrypt-auto
./letsencrypt-auto certonly --standalone --email [email protected] -d xxx.xx -d www.xxx.xx -d xxx.xxx.xx

当看到提示说证书存在/etc/letsencrypt/live/xxx.xx/时,就获取到证书了。

我遇到的问题是防火墙忘了关,导致无法进行服务端校验而无法获取证书。

会获取四个证书:

我们进行apache的https升级时需要用到的就下面两个,到时候在配置文件内修改。

3.修改ssl.conf和httpd.conf,仅写出需要修改的部分,并配置强制http跳转https

ssl.conf:

#Listen 443 https
DocumentRoot "/var/www/html/xxx"
ServerName www.xxx.xx:443
SSLCertificateFile /etc/letsencrypt/live/xxx.xx/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/xxx.xx/privkey.pem

httpd.conf:

Listen 80
Listen 443
DocumentRoot 自己根目录随意改 跟下面虚拟主机一样就行
<VirtualHost *:80>
DocumentRoot xxxx
ServerName www.xxx.xx
</VirtualHost>
<VirtualHost *:443>
DocumentRoot xxxx
ServerName www.xxx.xx
</VirtualHost>

在web根目录下添加.htaccess,内容为:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.xxx.xx/$1 [R=301,L]
RewriteCond %{HTTP_HOST} !^www.xxx.xx$ [NC]
RewriteRule ^(.*)$ https://www.xxx.xx/$1 [L,R=301]

4.定时执行
由于其默认90天免费,需要手动续约,所以可以用个定时脚本搞定
更新命令为:

</pre>
<pre>./letsencrypt-auto renew</pre>
<pre>

保存脚本为renew.sh:

</pre>
<pre>#!/bin/sh
if ! /绝对路径/letsencrypt/letsencrypt-auto renew > /var/log/letsencrypt/renew.log 2>&1 ; then
 echo Automated renewal failed:
 cat /var/log/letsencrypt/renew.log
 exit 1
fi

通过cron定时运行

添加:

<pre>0 5 * * * root sh /path/to/renew.sh > /dev/null 2>&1

You may alo like...

发表评论

电子邮件地址不会被公开。 必填项已用*标注