如果您是负责维护和保护Web服务器的系统管理员,您不能竭尽全力确保服务器提供的数据始终受到保护。
RHCE系列:使用Apache的网络安全服务(NSS)通过TLS实现HTTPS - 第8部分
以Web客户端和服务器之间提供更安全的通信,HTTPS协议出生作为HTTP和SSL( 安全套接层 )或更最近,TLS( 传输层安全 )的组合。
由于一些严重的安全漏洞,SSL已经被弃用,取而代之的更强大的TLS的。 因此,在本文中,我们将解释如何使用TLS保护Web服务器和客户端之间的连接。
本教程假定您已经安装并配置了Apache Web服务器。 如果没有,请进一步参考本网站中的以下文章。
安装OpenSSL和实用程序
首先,要确保Apache正在运行,并且HTTP和HTTPS被允许通过防火墙:
# 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默认端口):
Listen 443 VirtualHost _default_:443
然后重新启动Apache并检查mod_nss模块是否已经被加载:
# apachectl restart # httpd -M | grep 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数据库的密码