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

本文概述

  • 1.创建自签名SSL证书
  • 2.创建主机的HTTP版本
  • 3.创建HTTPS版本
在生产环境中, 甚至还有一种免费的方式可以通过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]:USState or Province Name (full name) [Some-State]: BlablaLocality Name (eg, city) []: BlablaOrganization Name (eg, company) [Internet Widgits Pty Ltd]: BlablaOrganizational Unit Name (eg, section) []: Department of BlablaCommon Name (e.g. server FQDN or YOUR name) []: mycustomdomain.comEmail 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 MultiViewsAllowOverride AllOrder allow, denyallow from all < /Directory> < /VirtualHost>

除非你已经拥有此虚拟主机, 否则需要使用以下命令启用它:
# Enable sitea2ensite mycustomdomain# Restart apachesystemctl restart apache2

这将允许你在浏览器中以HTTP版本浏览到mycustomdomain.com(假设你已经在/ etc / hosts中拥有主机的别名, 例如127.0.0.2 mycustomdomain.com)。
3.创建HTTPS版本现在, 基本上, 你需要做的是使用相同的属性创建同一虚拟主机的HTTPS版本, 但是我们将添加一些额外的设置来启用HTTPS支持:
SSLEngine onSSLCertificateFile /etc/apache2/ssl/apache.crtSSLCertificateKeyFile /etc/apache2/ssl/apache.key

重要的是要注意步骤2中提到的属性:
  • 服务器名称
  • 服务器别名
  • 文档根
必须与此虚拟主机相同, 否则主机将无法正常工作。在这种情况下, 我们的主机的HTTPS版本将位于/etc/apache2/sites-available/mycustomdomain_ssl.conf中, 并将具有以下内容:
< IfModule mod_ssl.c> < VirtualHost _default_:443> ServerAdminwebmaster@mycustomdomain.comServerName mycustomdomain.comServerAlias www.mycustomdomain.comDocumentRoot /var/www/html/mycustomdomainErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${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 onSSLCertificateFile /etc/apache2/ssl/apache.crtSSLCertificateKeyFile /etc/apache2/ssl/apache.key< Directory /var/www/html/mycustomdomain> Options Indexes FollowSymLinks MultiViewsAllowOverride AllOrder allow, denyallow from all< /Directory> < /VirtualHost> < /IfModule>

【如何在Ubuntu 19.04开发服务器上的特定域上设置自签名SSL/TLS证书】然后, 启用此虚拟主机并重新启动apache:
# Enable sitea2ensite mycustomdomain_ssl# Enable SSL support in apachesudo a2enmod ssl# Restart apachesystemctl restart apache2

现在, 你应该能够使用安全协议https:// mycustomdomain访问你的域。
编码愉快!

    推荐阅读