在本地主机上的通配符子域上设置 HTTPS


Setup HTTPS on wildcard subdomain on localhost

我在本地 Ubuntu 机器上创建了一个Laravel应用程序。但我想在其所有通配符子域上使用HTTPS。如何在本地执行此操作?顺便说一句,我已经在etc/hosts上添加了我的网站 URL,所以我不需要输入localhost而是www.mysite.loc.

回答这个问题 如何在 Ubuntu 中的本地主机上安装 SSL?,我认为只能在主域上使用。

不,这个问题的答案如何在 Ubuntu 中的本地主机上安装 SSL? 工作正常。但是您需要修改conf文件中的几行代码。

我现在设法尝试并且工作正常,但我从浏览器中收到这条令人讨厌的消息,指出我正在访问的网站不安全。虽然没关系,因为它只是自签名证书。

在我的/etc/hosts中,我为我的本地站点添加了几个子域,因为即使您正确配置了虚拟主机,它也无法正常工作,因为您开发的站点尚未在线访问。

比如说,www.mydomain.comhello.mydomain.comworld.mydomain.com

现在,我们需要启用 SSL 模块

sudo a2enmod ssl

重启阿帕奇

sudo service apache2 restart

为自签名 SSL 证书创建文件夹

sudo mkdir /etc/apache2/ssl

为 SSL 生成密钥和其他内容

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

回答他们的问题并使用您的域名说mydomain.com作为Common name

现在我编辑了我的虚拟主机的conf文件,该文件位于/etc/apache2/sites-available/mydomain.com.conf

这就是里面的东西

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
    ServerAdmin admin@example.com
    ServerName www.mydomain.com
    ServerAlias mydomain.com *.mydomain.com
    DocumentRoot /home/me/projects/www/mysite_folder
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key
    <FilesMatch "'.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>   
    <Directory "/home/me/projects/www/mysite_folder">
       SSLOptions +StdEnvVars
       Order allow,deny
       Allow from all
       # New directive needed in Apache 2.4.3: 
       Require all granted
       AllowOverride All
    </Directory>
    BrowserMatch "MSIE [2-6]" '
                    nokeepalive ssl-unclean-shutdown '
                    downgrade-1.0 force-response-1.0
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>

如果已启用虚拟主机,则需要跳过此步骤。否则,键入

sudo a2ensite mydomain.com.conf

最后,您需要通过以下方式再次重新启动Apache。

sudo service apache2 restart

希望对您有所帮助!现在,您可以使用https访问您的网站

前任。 https://www.mydomain.comhttps://hello.mydomain.comhttps://world.mydomain.com