创建SSL证书 安装并配置Open LDAP 安装Apache Web服务器CentOS 7 TLS和SSL背景 TLS是套接字层安全的新标准,处理SSL。TLS提供了更好的加密标准,其他安全和协议包装功能也在推进SSL。通常,术语TLS和SSL可以互换使用。不过,作为一名专业的CentOS管理员,需要注意每个人的差异和历史。 SSL 升级到3.0版。SSL是在Netscape下开发和推广的行业标准。AOL(一家在90年代流行的互联网服务提供商,也就是美国在线)收购Netscape后,美国在线从未真正推动SSL安全改进所需的变革。 在3.1版本中, SSL 技术已进入开放系统标准并更改为 TLS 。由于 SSL的 版权仍归AOL所有,因此创造了一个新术语: TLS - 传输层安全 。所以重要的是要承认 TLS 实际上与 SSL 不同。尤其是,由于较老的 SSL 技术已知安全问题,而且有些被认为是过时的。 注 - 本教程将在使用 技术3.1及更高版本时使用术语 TLS 。然后 SSL 评论特定于SSL技术的3.0及以下时。 SSL与TLS版本控制 下表显示了TLS和SSL版本控制如何相互关联。我听说有几个人用 SSL 3.2版来 讲话。但是,他们可能从阅读博客中获得了术语。作为专业管理员,我们总是希望使用标准术语。因此,虽然说 SSL 应该是对过去技术的参考。简单的事情可以让CentOS的求职者看起来像一个经验丰富的CS专业。 TLS SSL - 3.0 1.0 3.1 1.1 3.2 1.2 3.3 TLS 对当今互联网用户执行两项重要的重要功能:一是验证一方是谁,称为 认证 。第二,它为传输层提供了 端到端的加密 ,用于缺乏这种本地特性(ftp,http,电子邮件协议等)的上层协议。 首先, 验证一方 是否是安全重要的端到端加密。如果消费者与未被授权接受付款的网站进行加密连接,财务数据仍然存在风险。这就是每个网络钓鱼网站都没有的: 一个正确签署的TLS证书,用于验证网站运营商是他们声称来自可信CA的用户 。 只有两种方法可以避免没有正确签名的证书:诱使用户允许信任Web浏览器以获得自签名证书,或者希望用户不懂技术并且不知道可信证书的重要性管理局(或CA)。 在本教程中,我们将使用所谓的 自签名 证书。这意味着,如果没有明确授予此证书在访问网站的每个Web浏览器中受信任的状态,就会显示错误,阻止用户访问该网站。然后,在使用自签名证书访问站点之前,它将使用户跳过一些操作。请记住,为了安全起见,这是件好事。 安装和配置openssl openssl 是TLS开源实现的标准。 openssl 用于Linux,BSD发行版,OS X等系统,甚至支持Windows。 openssl非常重要,因为它提供了传输层安全性,并为开发人员提供了详细的 身份验证 和 端到端加密 编程。这就是为什么openssl几乎用于每个使用TLS的开源应用程序。它也默认安装在每个现代版本的Linux上。 默认情况下,至少从版本5开始, openssl 应该安装在CentOS上。为了保证,我们尝试通过YUM 安装 openssl 。只需运行安装程序即可,因为YUM的智能程度足以让我们知道是否已安装软件包。如果我们为了兼容性的原因正在运行较旧版本的CentOS,那么执行 yum -y install 将确保openssl针对半最近的心脏漏洞漏洞进行更新。 当运行安装程序时,发现实际上是对 openssl 的更新。 [root@centos]# yum -y install openssl Resolving Dependencies --> Running transaction check ---> Package openssl.x86_64 1:1.0.1e-60.el7 will be updated ---> Package openssl.x86_64 1:1.0.1e-60.el7_3.1 will be an update --> Processing Dependency: openssl-libs(x86-64) = 1:1.0.1e-60.el7_3.1 for package: 1:openssl-1.0.1e-60.el7_3.1.x86_64 --> Running transaction check ---> Package openssl-libs.x86_64 1:1.0.1e-60.el7 will be updated ---> Package openssl-libs.x86_64 1:1.0.1e-60.el7_3.1 will be an update --> Finished Dependency Resolution Dependencies Resolved =============================================================================== =============================================================================== Package Arch Version Repository Size =============================================================================== =============================================================================== Updating: openssl x86_64 1:1.0.1e-60.el7_3.1 updates 713 k Updating for dependencies: 为OpenLDAP创建自签名证书 这是为我们以前的 OpenLDAP 安装创建自签名的一种方法。 创建自签名的OpenLDAP证书。 openssl req -new -x509 -nodes -out /etc/openldap/certs/myldaplocal.pem -keyout /etc/openldap/certs/myldaplocal.pem -days 365 [root@centos]# openssl req -new -x509 -nodes -out /etc/openldap/certs/vmnet.pem -keyout /etc/openldap/certs/vmnet.pem -days 365 Generating a 2048 bit RSA private key .............................................+++ ................................................+++ writing new private key to '/etc/openldap/certs/vmnet.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:US State or Province Name (full name) []:Califonia Locality Name (eg, city) [Default City]:LA Organization Name (eg, company) [Default Company Ltd]:vmnet Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:centos Email Address []:bob@bobber.net [root@centos]# 现在我们的OpenLDAP证书应该放在 /etc/openldap/certs/ [root@centos]# ls /etc/openldap/certs/*.pem /etc/openldap/certs/vmnetcert.pem /etc/openldap/certs/vmnetkey.pem [root@centos]# 如您所见,我们将证书和密钥安装在 /etc/openldap/certs/ 目录中。最后,我们需要更改每个权限,因为它们目前由root用户拥有。 [root@centos]# chown -R ldap:ldap /etc/openldap/certs/*.pem [root@centos]# ls -ld /etc/openldap/certs/*.pem -rw-r--r--. 1 ldap ldap 1395 Feb 20 10:00 /etc/openldap/certs/vmnetcert.pem -rw-r--r--. 1 ldap ldap 1704 Feb 20 10:00 /etc/openldap/certs/vmnetkey.pem [root@centos]# 为Apache Web服务器创建自签名证书 在本教程中,我们将假定Apache已经安装。我们在另一个教程(配置CentOS防火墙)中安装了Apache,并将在未来的教程中进入Apache的高级安装。所以,如果你还没有安装Apache,请遵循。 一旦Apache HTTPd可以使用以下步骤进行安装 - 第1步 - 为Apache httpd服务器安装mod_ssl。 首先我们需要用mod_ssl配置Apache。使用YUM包管理器这非常简单 - [root@centos]# yum -y install mod_ssl 然后重新加载Apache守护程序以确保Apache使用新配置。 [root@centos]# systemctl reload httpd 此时,Apache被配置为支持本地主机上的TLS连接。 第2步 - 创建自签名SSL证书。 首先,让我们配置我们的私人TLS密钥目录。 [root@centos]# mkdir /etc/ssl/private [root@centos]# chmod 700 /etc/ssl/private/ 注 - 请确保只有root拥有对此目录的读/写访问权限。 通过世界读/写访问,您的私钥可用于解密嗅探的流量。 生成证书和密钥文件。 [root@centos]# sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/self-gen-apache.key -out /etc/ssl/certs/self-sign-apache.crt Generating a 2048 bit RSA private key ..........+++ ....+++ ----- Country Name (2 letter code) [XX]:US State or Province Name (full name) []:xx Locality Name (eg, city) [Default City]:xxxx Organization Name (eg, company) [Default Company Ltd]:VMNET Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:centos.vmnet.local Email Address []: [root@centos]# 注 - 如果您没有注册的域名,可以使用服务器的公共IP地址。 让我们来看看我们的证书 - [root@centos]# openssl x509 -in self-sign-apache.crt -text -noout Certificate: Data: Version: 3 (0x2) Serial Number: 17620849408802622302 (0xf489d52d94550b5e) Signature Algorithm: sha256WithRSAEncryption Issuer: C=US, ST=UT, L=xxxx, O=VMNET, CN=centos.vmnet.local Validity Not Before: Feb 24 07:07:55 2017 GMT Not After : Feb 24 07:07:55 2018 GMT Subject: C=US, ST=UT, L=xxxx, O=VMNET, CN=centos.vmnet.local Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:c1:74:3e:fc:03:ca:06:95:8d:3a:0b:7e:1a:56: f3:8d:de:c4:7e:ee:f9:fa:79:82:bf:db:a9:6d:2a: 57:e5:4c:31:83:cf:92:c4:e7:16:57:59:02:9e:38: 47:00:cd:b8:31:b8:34:55:1c:a3:5d:cd:b4:8c:b0: 66:0c:0c:81:8b:7e:65:26:50:9d:b7:ab:78:95:a5: 31:5e:87:81:cd:43:fc:4d:00:47:5e:06:d0:cb:71: 9b:2a:ab:f0:90:ce:81:45:0d:ae:a8:84:80:c5:0e: 79:8a:c1:9b:f4:38:5d:9e:94:4e:3a:3f:bd:cc:89: e5:96:4a:44:f5:3d:13:20:3d:6a:c6:4d:91:be:aa: ef:2e:d5:81:ea:82:c6:09:4f:40:74:c1:b1:37:6c: ff:50:08:dc:c8:f0:67:75:12:ab:cd:8d:3e:7b:59: e0:83:64:5d:0c:ab:93:e2:1c:78:f0:f4:80:9e:42: 7d:49:57:71:a2:96:c6:b8:44:16:93:6c:62:87:0f: 5c:fe:df:29:89:03:6e:e5:6d:db:0a:65:b2:5e:1d: c8:07:3d:8a:f0:6c:7f:f3:b9:32:b4:97:f6:71:81: 6b:97:e3:08:bd:d6:f8:19:40:f1:15:7e:f2:fd:a5: 12:24:08:39:fa:b6:cc:69:4e:53:1d:7e:9a:be:4b: 这里是对 openssl 命令使用的每个选项的解释- 命令 动作 req -X509 使用X.509 CSR管理PKI标准进行密钥管理。 -nodes 不要使用密码来保护我们的证书。Apache必须能够在不中断密码的情况下使用证书。 -days 2555 将证书的有效期限定为7年或2555天。时间段可以根据需要进行调整。 -newkey rsa:2048 指定使用长度为2048位的RSA生成密钥和证书。 接下来,我们要创建一个Diffie-Heliman小组来与客户谈判PFS。 [centos#] openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 这将需要5到15分钟。 完美的前向保密 - 用于保护会话数据,以防私钥泄露。 这将在客户端和服务器之间生成一个密钥,该密钥对于每个会话都是唯一的。 现在,将Perfect Forward Secrecy配置添加到我们的证书中。 [root@centos]# cat /etc/ssl/certs/dhparam.pem | tee -a /etc/ssl/certs/self-sign-apache.crt 配置Apache以使用密钥和证书文件 我们将对 /etc/httpd/conf.d/ssl.conf 进行更改- 我们将对 ssl.conf 进行以下更改。但是,在我们这样做之前,我们应该将原始文件备份起来。在使用 vi 或 emcas 等高级文本编辑器更改生产服务器时,最好在做编辑之前始终备份配置文件。 [root@centos]# cp /etc/httpd/conf.d/ssl.conf ~/ 现在,让我们在将ssl.conf的已知工作副本复制到我们的主文件夹的根目录后继续编辑。 定位 如下编辑DocumentRoot和ServerName。 \\# General setup for the virtual host, inherited from global configuration DocumentRoot "/var/www/html" ServerName centos.vmnet.local:443 DocumentRoot 这是你的默认apache目录的路径。在这个文件夹中应该是一个默认页面,它将显示一个HTTP请求,要求您的Web服务器或站点的默认页面。 ServerName 是服务器名称,可以是服务器的IP地址或主机名。对于TLS,最好使用主机名创建证书。从我们的OpenLdap教程中,我们在本地企业域中创建了一个centos主机名: vmnet.local 现在我们要评论以下几行。 SSLProtocol # SSL Protocol support: # List the enable protocol levels with which clients will be able to # connect. Disable SSLv2 access by default: ~~~~> #SSLProtocol all -SSLv2 # SSL Cipher Suite: # List the ciphers that the client is permitted to negotiate. # See the mod_ssl documentation for a complete list. ~~~~> #SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA 然后让Apache知道在哪里可以找到我们的证书和私钥/公钥对。 指定我们的自签名证书文件的路径 # Server Certificate: # Point SSLCertificateFile at a PEM encoded certificate. If # the certificate is encrypted, then you will be prompted for a # pass phrase. Note that a kill -HUP will prompt again. A new # certificate can be generated using the genkey(1) command. ~~~~> SSLCertificateFile /etc/ssl/certs/self-sign-apache.crt specify path to our private key file # Server Private Key: # If the key is not combined with the certificate, use this # directive to point at the key file. Keep in mind that if # you've both a RSA and a DSA private key you can configure # both in parallel (to also allow the use of DSA ciphers, etc.) ~~~~> SSLCertificateKeyFile /etc/ssl/private/self-gen-apache.key 最后,我们需要允许通过端口443的入站连接来 https 。 安装并配置Open LDAP 安装Apache Web服务器CentOS 7