如何安装加密SSL证书在RHEL / CentOS 7/6上安全Apache

关于SSL / TLS免费证书,在这篇文章中,我们将演示如何获取并安装加密证书颁发机构Apache Web服务器在CentOS / RHEL 7/6和Fedora发行免费SSL / TLS证书分布。 如果你想在Debian和Ubuntu上安装Let's Encrypt for Apache,请遵循以下指南:

安装让我们加密以在Debian和Ubuntu上保护Apache

测试示例环境
安装允许在CentOS和RHEL上加密Apache

安装允许在CentOS和RHEL上加密Apache

要求

  1. 已注册的域名与有效的A记录指向回您的服务器的公网IP地址。
  2. Apache服务器安装了SSL模块并启用了虚拟主机,以防您托管多个域或子域。

第1步:安装Apache Web服务器

1.如果尚未安装,httpd后台可以通过发出以下命令安装:
# yum install httpd
2.为了让我们的加密软件和Apache一起工作,确保通过发出下面的命令中的SSL / TLS模块安装:
# yum -y install mod_ssl
3.最后,启动用下面的命令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-release
5.一旦EPEL回购在您的系统被加入,继续前进,通过运行以下命令安装客户端的git:
# yum install git
6.现在,一旦你为了对付咱们加密已经安装了所有需要的依赖,进入/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证书

创建允许为Apache加密SSL证书

这将让我们的加密被用于恢复丢失的钥匙或紧急通知,然后按回车键继续8.供应的电子邮件地址。
为Lets Encrypt添加的电子邮件地址

为Lets Encrypt添加的电子邮件地址

9.按Enter键同意许可协议的条款。
同意允许加密许可证

同意允许加密许可证

10.CentOS / RHEL,默认情况下,Apache服务器不使用从可用(无效)主机基于Debian的分布启用主机分离的目录做的概念。 此外,默认情况下禁用虚拟主机。它指定服务器( 服务器 )的名称Apache声明它不存在于SSL配置文件。 要激活此指令,Let's Encrypt将提示您选择一个虚拟主机。因为它没有发现任何虚拟主机可用,选择ssl.conf文件通过让我们的客户端加密自动修改,按回车键继续。
活动VirtualHost指令并选择Mod_SSL

活动VirtualHost指令并选择Mod_SSL

11.接下来,选择HTTP请求,然后按Enter继续前进的简单方法。
允许轻松HTTP请求

允许轻松HTTP请求

12.最后,如果一切顺利了,应该在屏幕上显示的贺词。 按Enter键释放提示。
允许在域上启用加密

允许在域上启用加密

而已!您已成功发行为您的域的SSL / TLS证书。 现在你可以开始使用HTTPS协议浏览您的网站。

第4步:测试自由让我们加密加密域

13.为了测试您的域名的SSL / TLS握手的直线访问以下链接,并在您的域名测试您的证书。
https://www.ssllabs.com/ssltest/analyze.html
验证允许在域上加密证书

验证允许在域上加密证书

14.如果您收到了一系列关于在测试中进行了您的域名漏洞报告,那么你需要紧急修复这些安全漏洞。 C级的整体评价,使您的域名很有安全感。要解决这些安全问题,请打开Apache SSL配置文件并进行以下更改:
# vi /etc/httpd/conf.d/ssl.conf
搜索用于与线SSLProtocol语句,然后添加-SSLv3在该行的末尾。
修复Apache SSL配置

修复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配置

配置SSL配置

15.你做了上述所有的变化后,保存并关闭文件,然后重新启动Apache后台应用更改。
# systemctl restart httpd.service          [On RHEL/CentOS 7]
# service httpd restart                    [On RHEL/CentOS 6]
16.现在,再次测试你的域加密状态,通过访问与上述相同的链接。要执行重新测试,请从网站中点击清除缓存链接。
https://www.ssllabs.com/ssltest/analyze.html 
测试允许在网站上加密SSL证书

测试允许在网站上加密SSL证书

现在,你应该得到一个A级总体评价,这意味着你的域高度安全。

第4步:自动续订让我们在Apache上加密证书

17后的90天内让我们的加密软件版本与过期证书,该测试版。 因此,为了更新的SSL证书,则必须执行letsencrypt-auto再次到期日之前的命令,以用来获取初始证书相同的选项和标志。 有关如何手动更新证书的示例如下所示。
# cd /usr/local/letsencrypt
# ./letsencrypt-auto certonly --apache --renew-by-default  -d your_domain.tld
18.这个过程自动化,通过创建提供了以下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.tld
20.最后,使用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内容。