安装让我们加密以在Debian和Ubuntu上保护Apache
测试示例环境
安装允许在CentOS和RHEL上加密Apache
要求
- 已注册的域名与有效的
A
记录指向回您的服务器的公网IP地址。 - Apache服务器安装了SSL模块并启用了虚拟主机,以防您托管多个域或子域。
第1步:安装Apache Web服务器
1.如果尚未安装,httpd后台可以通过发出以下命令安装:# yum install httpd2.为了让我们的加密软件和Apache一起工作,确保通过发出下面的命令中的SSL / TLS模块安装:
# yum -y install mod_ssl3.最后,启动用下面的命令Apache服务器:
# systemctl start httpd.service [On RHEL/CentOS 7] # service httpd start [On RHEL/CentOS 6]
第2步:安装让我们加密SSL证书
4.安装 咱们加密客户端的最简单的方法是在文件系统中克隆的GitHub存储库。要在系统上安装git,您必须使用以下命令启用Epel存储库。# yum install epel-release5.一旦EPEL回购在您的系统被加入,继续前进,通过运行以下命令安装客户端的git:
# yum install git6.现在,一旦你为了对付咱们加密已经安装了所有需要的依赖,进入
/usr/local/
目录并启动拉动咱们加密客户端窗体使用以下命令其官方的github仓库:
# cd /usr/local/ # git clone https://github.com/letsencrypt/letsencrypt
第3步:获取一个免费让我们为Apache加密SSL证书
7.获得免费让我们的加密证书的Apache的过程是自动进行 的CentOS / RHEL感谢Apache插件。 让我们为了获得一个SSL证书运行 咱们加密脚本命令。 去让我们从加密安装目录/usr/local/letsencrypt
并运行
letsencrypt-auto
提供命令
--apache
选项和
-d
每一个你需要一个证书子标志。
# cd /usr/local/letsencrypt # ./letsencrypt-auto --apache -d your_domain.tld
创建允许为Apache加密SSL证书
为Lets Encrypt添加的电子邮件地址
同意允许加密许可证
ssl.conf
文件通过让我们的客户端加密自动修改,按
回车键继续。
活动VirtualHost指令并选择Mod_SSL
允许轻松HTTP请求
允许在域上启用加密
第4步:测试自由让我们加密加密域
13.为了测试您的域名的SSL / TLS握手的直线访问以下链接,并在您的域名测试您的证书。https://www.ssllabs.com/ssltest/analyze.html
验证允许在域上加密证书
# vi /etc/httpd/conf.d/ssl.conf搜索用于与线
SSLProtocol
语句,然后添加
-SSLv3
在该行的末尾。
修复Apache SSL配置
SSLCipherSuite
放置一个
#
在前面,而且该行下添加以下内容:
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA SSLHonorCipherOrder on SSLOptions +StrictRequire
配置SSL配置
# systemctl restart httpd.service [On RHEL/CentOS 7] # service httpd restart [On RHEL/CentOS 6]16.现在,再次测试你的域加密状态,通过访问与上述相同的链接。要执行重新测试,请从网站中点击清除缓存链接。
https://www.ssllabs.com/ssltest/analyze.html
测试允许在网站上加密SSL证书
第4步:自动续订让我们在Apache上加密证书
17后的 90天内让我们的加密软件版本与过期证书,该测试版。 因此,为了更新的SSL证书,则必须执行letsencrypt-auto
再次到期日之前的命令,以用来获取初始证书相同的选项和标志。 有关如何手动更新证书的示例如下所示。
# cd /usr/local/letsencrypt # ./letsencrypt-auto certonly --apache --renew-by-default -d your_domain.tld18.这个过程自动化,通过创建提供了以下bash脚本 github上erikaheidi中
/usr/local/bin/
用下面的内容目录。 (该脚本稍作修改以反映我们的letsencrypt安装目录)。
# vi /usr/local/bin/le-renew-centos添加以下内容
le-renew-centos
文件:
!/bin/bash domain=$1 le_path='/usr/local/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/bin/systemctl restart httpd echo "Renewal process finished for domain $domain" exit 0; fi为脚本 19授予执行权限,安装包 BC,为了测试它运行脚本。使用您的域名作为脚本的位置参数。发出以下命令完成此步骤:
# yum install bc # chmod +x /usr/local/bin/le-renew-centos # /usr/local/bin/le-renew-centos your_domain.tld20.最后,使用Linux调度,以运行脚本每两个月增加一个新的cron作业,保证你的证书过期之前进行更新。
# crontab -e在文件底部添加以下行。
0 1 1 */2 * /usr/local/bin/le-renew-centos your_domain.tld >> /var/log/your_domain.tld-renew.log 2>&1而已!在 CentOS / RHEL系统上运行的Apache服务器现正在使用的是免费让我们加密的SSL证书SSL内容。