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
找到 SSLCertificateFile
和 SSLCertificateKeyFile
,把路径改为刚才我们创建的文件路径 /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 证书,以防止向每个访问者显示可怕的警告信息。
引用