RHCE 系列(八):在 Apache 上使用网络安全服务(NSS)实现 HTTPS

简介: RHCE 系列(八):在 Apache 上使用网络安全服务(NSS)实现 HTTPS 如果你是一个负责维护和确保 web 服务器安全的系统管理员,你需要花费最大的精力确保服务器中处理和通过的数据任何时候都受到保护。

RHCE 系列(八):在 Apache 上使用网络安全服务(NSS)实现 HTTPS



如果你是一个负责维护和确保 web 服务器安全的系统管理员,你需要花费最大的精力确保服务器中处理和通过的数据任何时候都受到保护。

使用 SSL/TLS 设置 Apache HTTPS

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

为了在客户端和服务器之间提供更安全的连接,作为 HTTP 和 SSL(Secure Sockets Layer安全套接层)或者最近称为 TLS(Transport Layer Security传输层安全)的组合,产生了 HTTPS 协议。

由于一些严重的安全漏洞,SSL 已经被更健壮的 TLS 替代。由于这个原因,在这篇文章中我们会解析如何通过 TLS 实现你 web 服务器和客户端之间的安全连接。

这里假设你已经安装并配置好了 Apache web 服务器。如果还没有,在进入下一步之前请阅读下面站点中的文章。

安装 OpenSSL 和一些工具包

首先,确保正在运行 Apache 并且允许 http 和 https 通过防火墙:


  
  
  1. # systemctl start http
  2. # systemctl enable http
  3. # firewall-cmd --permanent –-add-service=http
  4. # firewall-cmd --permanent –-add-service=https

然后安装一些必需的软件包:


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

重要:请注意如果你想使用 OpenSSL 库而不是 NSS(Network Security Service网络安全服务)实现 TLS,你可以在上面的命令中用 mod_ssl 替换 mod_nss(使用哪一个取决于你,但在这篇文章中我们会使用 NSS,因为它更加安全,比如说,它支持最新的加密标准,比如 PKCS #11)。

如果你使用 mod_nss,首先要卸载 mod_ssl,反之如此。


  
  
  1. # yum remove mod_ssl

配置 NSS(网络安全服务)

安装完 mod_nss 之后,会创建默认的配置文件 /etc/httpd/conf.d/nss.conf。你应该确保所有 Listen 和 VirualHost 指令都指向 443 号端口(HTTPS 默认端口):

nss.conf – 配置文件



  
  
  1. Listen 443
  2. VirtualHost _default_:443

然后重启 Apache 并检查是否加载了 mod_nss 模块:


  
  
  1. # apachectl restart
  2. # httpd -M | grep nss

在 Apache 中检查 mod_nss 模块

检查 Apache 是否加载 mod_nss 模块

下一步,在 /etc/httpd/conf.d/nss.conf 配置文件中做以下更改:

1、 指定 NSS 数据库目录。你可以使用默认的目录或者新建一个。本文中我们使用默认的:


  
  
  1. NSSCertificateDatabase /etc/httpd/alias

2、 通过保存密码到数据库目录中的 /etc/httpd/nss-db-password.conf 文件来避免每次系统启动时要手动输入密码:


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

其中 /etc/httpd/nss-db-password.conf 只包含以下一行,其中 mypassword 是后面你为 NSS 数据库设置的密码:


  
  
  1. internal:mypassword

另外,要设置该文件的权限和属主为 0640 和 root:apache:


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

3、 由于 POODLE SSLv3 漏洞,红帽建议停用 SSL 和 TLSv1.0 之前所有版本的 TLS(更多信息可以查看这里)。

确保 NSSProtocol 指令的每个实例都类似下面一样(如果你没有托管其它虚拟主机,很可能只有一条):


  
  
  1. NSSProtocol TLSv1.0,TLSv1.1

4、 由于这是一个自签名证书,Apache 会拒绝重启,并不会识别为有效发行人。由于这个原因,对于这种特殊情况我们还需要添加:


  
  
  1. NSSEnforceValidCerts off

5、 虽然并不是严格要求,为 NSS 数据库设置一个密码同样很重要:


  
  
  1. # certutil -W -d /etc/httpd/alias

为 NSS 数据库设置密码

为 NSS 数据库设置密码

创建一个 Apache SSL 自签名证书

下一步,我们会创建一个自签名证书来让我们的客户机可以识别服务器(请注意这个方法对于生产环境并不是最好的选择;对于生产环境你应该考虑购买第三方可信证书机构验证的证书,例如 DigiCert)。

我们用 genkey 命令为 box1 创建有效期为 365 天的 NSS 兼容证书。完成这一步后:


  
  
  1. # genkey --nss --days 365 box1

选择 Next:

创建 Apache SSL 密钥

创建 Apache SSL 密钥

你可以使用默认的密钥大小(2048),然后再次选择 Next:

选择 Apache SSL 密钥大小

选择 Apache SSL 密钥大小

等待系统生成随机比特:

生成随机密钥比特

生成随机密钥比特

为了加快速度,会提示你在控制台输入随机字符,正如下面的截图所示。请注意当没有从键盘接收到输入时进度条是如何停止的。然后,会让你选择:

  1. 是否发送验证签名请求(CSR)到一个验证机构(CA):选择 No,因为这是一个自签名证书。

  2. 为证书输入信息。

  3. 最后,会提示你输入之前给 NSS 证书设置的密码:


  
  
  1. # genkey --nss --days 365 box1

Apache NSS 证书密码

Apache NSS 证书密码

需要的话,你可以用以下命令列出现有的证书:


  
  
  1. # certutil L d /etc/httpd/alias

列出 Apache NSS 证书

列出 Apache NSS 证书

然后通过名字删除(如果你真的需要删除的,用你自己的证书名称替换 box1):


  
  
  1. # certutil -d /etc/httpd/alias -D -n "box1"

如果你需要继续进行的话,请继续阅读。

测试 Apache SSL HTTPS 连接

最后,是时候测试到我们服务器的安全连接了。当你用浏览器打开 https://<web 服务器 IP 或主机名>,你会看到著名的信息 “This connection is untrusted”:

检查 Apache SSL 连接

检查 Apache SSL 连接

在上面的情况中,你可以点击添加例外Add Exception 然后确认安全例外Confirm Security Exception - 但先不要这么做。让我们首先来看看证书看它的信息是否和我们之前输入的相符(如截图所示)。

要做到这点,点击上面的视图View...-> 详情Details选项卡,当你从列表中选择发行人你应该看到这个:

确认 Apache SSL 证书详情

确认 Apache SSL 证书详情

现在你可以继续,确认例外(限于此次或永久),然后会通过 https 把你带到你 web 服务器的 DocumentRoot 目录,在这里你可以使用你浏览器自带的开发者工具检查连接详情:

在火狐浏览器中,你可以通过在屏幕中右击,然后从上下文菜单中选择检查元素Inspect Element启动开发者工具,尤其要看“网络Network”选项卡:

检查 Apache HTTPS 连接

检查 Apache HTTPS 连接

请注意这和之前显示的在验证过程中输入的信息一致。还有一种方式通过使用命令行工具测试连接:

左图(测试 SSLv3):


  
  
  1. # openssl s_client -connect localhost:443 -ssl3

右图(测试 TLS):


  
  
  1. # openssl s_client -connect localhost:443 -tls1

测试 Apache SSL 和 TLS 连接

测试 Apache SSL 和 TLS 连接

参考上面的截图了解更详细信息。

总结

我想你已经知道,使用 HTTPS 会增加会在你站点中输入个人信息的访客的信任(从用户名和密码到任何商业/银行账户信息)。

在那种情况下,你会希望获得由可信验证机构签名的证书,正如我们之前解释的(步骤和设置需要启用例外的证书的步骤相同,发送 CSR 到 CA 然后获得返回的签名证书);否则,就像我们的例子中一样使用自签名证书即可。

要获取更多关于使用 NSS 的详情,可以参考关于 mod-nss 的在线帮助。如果你有任何疑问或评论,请告诉我们。

本文来自云栖社区合作伙伴“Linux中国”,原文发表于2013-04-02.

相关文章
|
2月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
89 3
|
2月前
|
Linux 网络安全 Apache
CentOS 7.2配置Apache服务httpd(上)
CentOS 7.2配置Apache服务httpd(上)
280 1
|
17天前
|
算法 安全 网络安全
网络安全服务
机密主要利用密码学技术加密文件实现,完整主要利用验证码/Hash技术,可用**主要灾备来保障。 网络环境下的身份鉴别,当然还是依托于密码学,一种可以使用口令技术,另一种则是依托物理形式的鉴别,如身份卡等。其实更为安全的是实施多因子的身份认证,不只使用一种方式。数字签名可以用来保证信息的完整性,比如RSA就可以用于数字签名: 若A向B发送信息m则先用自己的保密密钥(私钥)对m加密,然后用B的公钥第二次加密,发送个B后,B先用自己的私钥解密一次,再用A的公钥解密即可。 Kerberos使用对称密码算法来实现通过可信第三方密钥分发中心的认证服务,已经成为工业界的事实标准。
24 3
|
1月前
|
云安全 人工智能 安全
阿里云稳居公共云网络安全即服务市占率第一
日前,全球领先的IT市场研究和咨询公司IDC发布了《中国公有云网络安全即服务市场份额,2023:规模稳步增长,技术创新引领市场格局》报告。报告显示,阿里云以27.0%的市场份额蝉联榜首。
|
2月前
|
存储 安全 网络安全
云端盾牌:云计算时代的网络安全守护在数字化浪潮中,云计算以其高效、灵活的特性成为企业转型的加速器。然而,伴随其迅猛发展,网络安全问题亦如影随形,成为悬在每个组织头顶的达摩克利斯之剑。本文旨在探讨云计算服务中的网络安全挑战,分析信息安全的重要性,并提出相应对策,以期为企业构建一道坚实的云端防护网。
在当今这个数据驱动的时代,云计算已成为推动创新与效率的关键力量。它允许用户随时随地访问强大的计算资源,降低了企业的运营成本,加速了产品上市时间。但随之而来的网络威胁也日益猖獗,尤其是对于依赖云服务的企业而言,数据泄露、身份盗用等安全事件频发,不仅造成经济损失,更严重损害品牌信誉。本文深入剖析云计算环境中的安全风险,强调建立健全的信息安全管理机制的重要性,并分享一系列有效策略,旨在帮助企业和个人用户在享受云服务带来的便利的同时,也能构筑起强有力的网络防线。
|
2月前
|
存储 分布式计算 druid
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
68 3
|
2月前
|
Linux PHP Apache
CentOS 7.2配置Apache服务httpd(下)
CentOS 7.2配置Apache服务httpd(下)
58 1
|
3月前
|
机器学习/深度学习 安全 网络安全
云端盾牌:云计算时代的网络安全守护在这个数字脉搏加速跳动的时代,云计算以其高效、灵活的特性,成为推动企业数字化转型的强劲引擎。然而,正如每枚硬币都有两面,云计算的广泛应用也同步放大了网络安全的风险敞口。本文旨在探讨云计算服务中网络安全的关键作用,以及如何构建一道坚不可摧的信息防线,确保数据的安全与隐私。
云计算作为信息技术领域的革新力量,正深刻改变着企业的运营模式和人们的生活。但在享受其带来的便利与效率的同时,云服务的安全问题不容忽视。从数据泄露到服务中断,每一个安全事件都可能给企业和个人带来难以估量的损失。因此,本文聚焦于云计算环境下的网络安全挑战,分析其根源,并提出有效的防护策略,旨在为云服务的安全使用提供指导和参考。
85 8
|
4月前
|
数据采集 分布式计算 Kubernetes
Apache Flink 实践问题之ZooKeeper 网络瞬断时如何解决
Apache Flink 实践问题之ZooKeeper 网络瞬断时如何解决
117 4

推荐镜像

更多