本文概述
在生产环境中, 甚至还有一种免费的方式可以通过Let’s Encrypt获得SSL证书。但是, 在工作环境中进行测试的地方环境中, 不需要公共有效且经过签名的SSL / TLS证书即可通过HTTPS访问网站。可以使用已签名的密码, 当然也可以在互联网上购买, 但是, 如果你可以在本地简单地使用自签名的密码而无需支付一角钱, 那么为什么要这样做呢?
在本文中, 我们将向你介绍如何在Ubuntu中使用自签名SSL证书轻松创建本地网站的安全版本。
1.创建自签名SSL证书
你将需要一个证书来为你的域提供对HTTPS的支持。使用以下命令在apache安装目录中创建以下目录:
sudo mkdir /etc/apache2/ssl
然后, 使用以下命令在先前创建的目录中创建证书:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
这将开始提示你询问有关证书的信息, 你可以用真实或伪造的数据填充该证书, 因为它只能在本地环境中使用:
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]: Blabla
Locality Name (eg, city) []: Blabla
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Blabla
Organizational Unit Name (eg, section) []: Department of Blabla
Common Name (e.g. server FQDN or YOUR name) []: mycustomdomain.com
Email Address []: Blabla@Blabla.com
完成后, 你将拥有一个自签名证书, 该证书可用于为Apache中的域提供HTTPS支持。输出文件:
- /etc/apache2/ssl/apache.key
- /etc/apache2/ssl/apache.crt
将在第三步中使用。
2.创建主机的HTTP版本
首先, 你需要具有VirtualHost的标准版本, 该标准版本在端口80(http:// mycustomdomain)中进行侦听。通常, 此虚拟主机的配置由你决定, 但是, 也需要考虑一些重要事项, 以使VirtualHost成为HTTPS版本。你将需要精确定义:
- 服务器名称
- 服务器别名
- 文档根
提到的3个属性在HTTPS版本中必须相同, 因此请确保它们匹配。以下虚拟主机是在mycustomdomain.com中侦听的基本http虚拟主机的示例:此文件位于/etc/apache2/sites-available/mycustomdomain.conf:
<VirtualHost *:80>
ServerAdmin webmaster@mycustomdomain.com
ServerName mycustomdomain
ServerAlias www.mycustomdomain.com
DocumentRoot /var/www/html/mycustomdomain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/html/mycustomdomain>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow, deny
allow from all
</Directory>
</VirtualHost>
除非你已经拥有此虚拟主机, 否则需要使用以下命令启用它:
# Enable site
a2ensite mycustomdomain
# Restart apache
systemctl restart apache2
这将允许你在浏览器中以HTTP版本浏览到mycustomdomain.com(假设你已经在/ etc / hosts中拥有主机的别名, 例如127.0.0.2 mycustomdomain.com)。
3.创建HTTPS版本
现在, 基本上, 你需要做的是使用相同的属性创建同一虚拟主机的HTTPS版本, 但是我们将添加一些额外的设置来启用HTTPS支持:
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
重要的是要注意步骤2中提到的属性:
- 服务器名称
- 服务器别名
- 文档根
必须与此虚拟主机相同, 否则主机将无法正常工作。在这种情况下, 我们的主机的HTTPS版本将位于/etc/apache2/sites-available/mycustomdomain_ssl.conf中, 并将具有以下内容:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@mycustomdomain.com
ServerName mycustomdomain.com
ServerAlias www.mycustomdomain.com
DocumentRoot /var/www/html/mycustomdomain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
# They should target the .key and .crt file created on the first step.
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
<Directory /var/www/html/mycustomdomain>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow, deny
allow from all
</Directory>
</VirtualHost>
</IfModule>
然后, 启用此虚拟主机并重新启动apache:
# Enable site
a2ensite mycustomdomain_ssl
# Enable SSL support in apache
sudo a2enmod ssl
# Restart apache
systemctl restart apache2
现在, 你应该能够使用安全协议https:// mycustomdomain访问你的域。
编码愉快!
评论前必须登录!
注册