[翻译]How To Create an SSL Certificate on Apache for CentOS 7

Introduction

在本指南中,我们将向您展示如何设置自签名 SSL 证书,以便在 CentOS 7 VPS 上与 Apache Web 服务器配合使用。自签名证书不会验证您的服务器的身份,因为它不是由受信任的证书颁发机构签名的,但它将允许您加密服务器和访问者之间的通信。

Step One — Install Mod SSL

安装 Apache SSL 支持模块:mod_ssl

sudo yum install mod_ssl

重启 Apache 后就能使用 SSL 证书。

Step Two — Create a New Certificate

现在 Apache 能够使用加密了,接着生成一个新的 SSL 证书。证书包含了一些你网站的基础信息,同时有一个 key file 使得服务器能够安全的处理加密后的数据。

首先我们新建一个用于保存,server key 和证书的目录:

sudo mkdir /etc/httpd/ssl

接着用 openssl 创建 SSL key 和证书文件:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/apache.key -out /etc/httpd/ssl/apache.crt

敲完回车后,你就能输入网站的提示选项了。在这之前,让我们具体看一下上面的指令:

  • openssl:基本命令,用于创建和管理 OpenSSL 证书、key 和其他文件。
  • -reg -x509:指定使用 X.509 certificate signing request (CSR) 管理。"X.509" 是 SSL 和 TLS 遵守的用于密钥和证书管理的公钥基础标准。
  • -nodes:告诉 OpenSSL 跳过使用密码保护证书的选项。我们需要 Apache 在服务启动时能够直接读取文件,不用用户介入。使用密码会使得每次重启后都需要输入密码。
  • -days 365:设置证书有效的时间长度。 我们在这里设置了一年。
  • -newkey rsa:2048:指定同时生成新的证书和新的密钥。 在上一步中我们没有创建签署证书所需的密钥,因此我们需要与证书一起创建。"rsa:2048" 指定生成一个2048位长的RSA密钥。
  • -keyout:告诉 OpenSSL 将生成的 private key 文件保存在哪里。
  • -out:告诉 OpenSSL 将生成的证书保存在哪里。

适当填写提示选项。最重要的一项是填写 Common Name。填写需要的域名,没有域名的话可以填写 IP 地址。

全部选项如下:

Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Example
Locality Name (eg, city) [Default City]:Example 
Organization Name (eg, company) [Default Company Ltd]:Example Inc
Organizational Unit Name (eg, section) []:Example Dept
Common Name (eg, your name or your server's hostname) []:example.com
Email Address []:webmaster@example.com

Step Three — Set Up the Certificate

现在我们拥有了完成接口所需的组件。接下来要做的是设置虚拟主机以显示新证书。

用 root 权限打开 Apache SSL 的配置文件:

sudo nano /etc/httpd/conf.d/ssl.conf

找到 <VirtualHost _default_:443>,然后改点东西。

首先,取消 DocumentRoot 行的注释,将地址编辑为带引号的网站根目录路径。默认为 /var/www/html

DocumentRoot "/var/www/example.com/public_html"

接着,取消 ServerName 行的注释,填写域名或者 IP(刚才在 OpenSSL 中配置的):

ServerName www.example.com:443

找到 SSLCertificateFileSSLCertificateKeyFile,把路径改为刚才我们创建的文件路径 /etc/httpd/ssl

SSLCertificateFile /etc/httpd/ssl/apache.crt
SSLCertificateKeyFile /etc/httpd/ssl/apache.key

保存并退出配置文件。

Step Four — Activate the Certificate

重启 Apache 使刚才配置的内容生效:

sudo apachectl restart

尝试用 https:// 访问你的域名或者 IP:

https://example.com/

你的浏览器很有可能会警告你,访问的网站的安全证书是不可信的。由于你的证书并没有在浏览器信任的证书认证机构中注册,浏览器无法验证正在访问的服务器的身份。我们仅创建了 self-signed(自签名)证书而不是受信任的 CA 签名证书,所以才会发生这样的现象。

在浏览器的身份验证添加例外后,你就可以继续访问你新的安全网站了。

Conclusion

如果你计划在公开的网站上使用SSL,则应该从可信的证书颁发机构购买 SSL 证书,以防止向每个访问者显示可怕的警告信息。

引用

digitalocean

标签: CentOS, Apache, SSL