个性化阅读
专注于IT技术分析

如何在Ubuntu 19.04开发服务器上的特定域上设置自签名SSL/TLS证书

本文概述

在生产环境中, 甚至还有一种免费的方式可以通过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访问你的域。

编码愉快!

赞(0)
未经允许不得转载:srcmini » 如何在Ubuntu 19.04开发服务器上的特定域上设置自签名SSL/TLS证书

评论 抢沙发

评论前必须登录!