我想在托管 Apache 服务器的 Amazon Elastic Compute Cloud (Amazon EC2) Ubuntu 实例上安装自签名 SSL/TLS 证书。
解决方案
**先决条件:**确保实例的安全组允许端口 80 和 443 上的流量。
安装 Apache 和 OpenSSL Web 服务器
要在您的服务器上安装 Apache 和 OpenSSL,请运行以下命令:
sudo apt-get install apache2 openssl -y
生成自签名证书
完成以下步骤:
-
SSL/TLS 同时使用公钥和私钥。要为您的域创建私钥和证书签名请求 (CSR),请运行以下命令:
sudo openssl req -nodes -newkey rsa:2048 -keyout /etc/ssl/private/private.key -out /etc/ssl/private/request.csr
-
要生成 SSL/TLS 证书,请运行以下命令:
sudo openssl x509 -in /etc/ssl/private/request.csr -out /etc/ssl/private/certificate.crt -req -signkey /etc/ssl/private/private.key -days 365
现在,您可以在 Apache Web 服务器上使用密钥文件 (private.key) 和证书文件 (certificate.crt)。
将 Apache 配置为使用 SSL/TLS
要将 Apache 配置为使用您创建的自签名证书,请完成以下步骤:
-
运行以下命令以打开默认 Apache SSL 配置文件:
sudo vi /etc/apache2/sites-available/default-ssl.conf
-
使用以下路径定义 SSL 证书的位置:
对于 SSLCertificateFile,请使用 /etc/ssl/private/certificate.crt。
对于 SSLCertificateKeyFile,请使用 /etc/ssl/private/private.key。
-
保存并关闭该文件。然后,运行以下命令以激活虚拟主机文件:
sudo a2ensite default-ssl.conf
-
要打开 Apache 的默认虚拟主机配置文件,请运行以下命令:
sudo vi /etc/apache2/sites-available/000-default.conf
-
要向您的域名添加重定向,请将以下行添加到 etc/apache2/sites-available/000-default.conf 中:
Redirect "/" https://Server-IP
**注意:**请将 Server-IP 替换为您的服务器 IP 地址。最佳做法是在 DocumentRoot 行之后输入前一行。重定向会将所有流量转发到网站的 SSL/TLS 版本。
-
要激活 SSL/TLS 和标头模块,请运行以下命令:
sudo a2enmod ssl
sudo a2enmod headers
-
运行以下命令以重新加载 Apache 服务并应用修改:
sudo systemctl reload apache2
验证您的 SSL/TLS 服务器
完成以下步骤:
- 启动您的 Web 浏览器。
- 打开 https://Server-IP。
**注意:**请将 Server-IP 替换为您的服务器 IP 地址。Web 浏览器会将您重定向到警告页面。出现此行为是因为您的证书未经受信任的证书颁发机构签名。
- 选择 Proceed to Host(继续访问主机)以打开 Apache 主页。浏览器地址栏中会出现一个显示不安全的锁。这表明该证书未经过验证,但会对您的连接进行加密。
有关如何在 Red Hat Enterprise Linux (RHEL) 或 Community Enterprise Linux 上配置 SSL/TLS 的信息,请参阅 Red Hat 网站上的 Setting up a webserver to use HTTPS(设置 Web 服务器以使用 HTTPS)。或者,如果您使用的是 Amazon Linux,请查看 Amazon Linux 1 (AL1)、Amazon Linux 2 (AL2) 或 Amazon Linux 2023 (AL2023) 的 SSL/TLS 配置。