RHCE系列:使用Apache的网络安全服务(NSS)通过TLS实现HTTPS - 第8部分

为了在Web客户端和服务器之间提供更安全的通信,HTTPS协议诞生为HTTP和SSL(安全套接字)的组合

如果您是负责维护和保护Web服务器的系统管理员,您不能竭尽全力确保服务器提供的数据始终受到保护。

使用SSL / TLS设置Apache HTTPS

RHCE系列:使用Apache的网络安全服务(NSS)通过TLS实现HTTPS - 第8部分

以Web客户端和服务器之间提供更安全的通信,HTTPS协议出生作为HTTPSSL( 安全套接层 )或更最近,TLS( 传输层安全 )的组合。

由于一些严重的安全漏洞,SSL已经被弃用,取而代之的更强大的TLS的。 因此,在本文中,我们将解释如何使用TLS保护Web服务器和客户端之间的连接。

本教程假定您已经安装并配置了Apache Web服务器。 如果没有,请进一步参考本网站中的以下文章。

  1. 在RHEL / CentOS 7上安装LAMP(Linux,MySQL / MariaDB,Apache和PHP)

安装OpenSSL和实用程序

首先,要确保Apache正在运行,并且HTTPHTTPS被允许通过防火墙:

# systemctl start http
# systemctl enable http
# firewall-cmd --permanent –-add-service=http
# firewall-cmd --permanent –-add-service=https

然后安装必要的包:

# yum update && yum install openssl mod_nss crypto-utils

重要提示 :请注意,您可以在命令mod_ssl的替代mod_nss上面,如果你想使用OpenSSL库而不是NSS( 网络安全服务 )来实现TLS(使用哪一个是完全取决于你,但我们将使用NSS在这篇文章中,因为它是更健壮的;例如,它支持最近加密标准,例如PKCS#11)。

最后,卸载了mod_ssl如果您选择使用mod_nss,或者反之亦然。

# yum remove mod_ssl

配置NSS(网络安全服务)

安装mod_nss后,其默认的配置文件作为/etc/httpd/conf.d/nss.conf创建。 然后,您应该确保所有的VirtualHost指令指向端口443(用于HTTPS默认端口):

nss.conf - 配置文件
Listen 443
VirtualHost _default_:443

然后重新启动Apache并检查mod_nss模块是否已经被加载:

# apachectl restart
# httpd -M | grep nss
在Apache中检查Mod_NSS模块

检查在Apache中加载的Mod_NSS模块

下面,编辑应进行/etc/httpd/conf.d/nss.conf配置文件:

1.指示NSS数据库目录。 您可以使用默认目录或创建一个新目录。 在本教程中,我们将使用默认:

NSSCertificateDatabase /etc/httpd/alias

2.保存密码在/etc/httpd/nss-db-password.conf数据库目录避免在每个系统入门手册密码输入:

NSSPassPhraseDialog file:/etc/httpd/nss-db-password.conf

/etc/httpd/nss-db-password.conf只包含下面一行, 输入mypassword是,你将稍后设置了NSS数据库的密码:

internal:mypassword

此外,它的权限和所有权应设置为0640根:Apache ,分别为:

# chmod 640 /etc/httpd/nss-db-password.conf
# chgrp apache /etc/httpd/nss-db-password.conf

3.红帽建议禁用SSL,并且由于POODLE SSLv3的漏洞(更多信息早于TLSv1.0所有版本的TLS 这里 )。

确保NSSProtocol指令的每个实例如下(你可能会发现只有一个,如果你不承载其他虚拟主机):

NSSProtocol TLSv1.0,TLSv1.1

4. Apache将拒绝重新启动,因为这是一个自签名的证书,将无法识别发行人有效。 因此,在这种情况下,您必须添加:

NSSEnforceValidCerts off

5.虽然没有严格要求,它设置了NSS数据库的密码是非常重要的:

# certutil -W -d /etc/httpd/alias
设置NSS数据库的密码

设置NSS数据库的密码