我被要求在Apache上的localhost上使用自签名证书设置HTTPS,但我实际上如何做到这一点?我完全不知道。


当前回答

这实际上很简单,假设您手边有一个openssl安装。(您在哪个站台?)

假设你使用的是linux/solaris/mac os/x, Van的Apache SSL/TLS mini-HOWTO有一个很好的演练,我在这里就不再赘述了。

但是,执行摘要是您必须创建一个自签名证书。由于您运行apache for localhost大概是为了开发(即不是公共web服务器),您将知道您可以信任自签名证书,并且可以忽略浏览器抛出的警告。

其他回答

博士tl;

ssh -R youruniquesubdomain:80:localhost:3000 serveo.net

您的本地环境可以从https://youruniquesubdomain.serveo.net访问

Serveo是最好的

没有注册。 没有安装。 HTTPS。 全球范围内访问。 您可以指定自定义修复子域。 你可以自己托管它,这样你就可以使用自己的域名,即使服务宕机,你也可以为未来做准备。

当我发现这项服务时,我简直不敢相信。它提供了一切,而且是最容易使用的。如果有这样一个简单无痛的工具可以解决所有问题……

这很简单,

只需运行以下命令

sudo a2enmod ssl

sudo service apache2 restart

sudo a2ensite default-ssl.conf

就这样,你完成了。

如果你想强制使用SSL(总是使用https),编辑文件:

sudo nano /etc/apache2/sites-available/000-default.conf

加上这一行

<VirtualHost *:80>
        . . .

        Redirect "/" "https://your_domain_or_IP/"

        . . .
</VirtualHost>

然后重新启动

sudo service apache2 restart

为了保护发送到web服务器和从web服务器发送的信息的安全,启用客户端和服务器之间的通信加密是一个好主意。这通常称为SSL。

因此,让我们在Apache2上使用自签名证书设置HTTPS。我将列出你应该遵循的步骤:

在你的机器上安装apache2 web server。对于linux机器,打开终端并输入

Sudo apt-get安装apache2

安装成功后,可以通过命令检查apache2服务的状态

Sudo服务apache2状态

它应该输出

导航到浏览器并输入

http://localhost:80

验证您获得了apache2的默认页面,如下所示。

为了加密web连接,我们需要CA(证书颁发机构)的证书,或者我们可以使用自签名证书。让我们使用以下命令创建一个自签名证书。

Openssl req -x509 -newkey rsa:2048 -keyout mykey。输入mycert。Pem -days 365 -nodes

请按如下所示填写相关信息。

mykey。Key和mycert。Pem应在当前工作目录中创建。

如果我们把证书和密钥移到一个公共的地方,apache2 web服务器就很容易找到它们了。让我们执行下面的命令

Sudo cp mycert。pem /etc/ssl/certs

Sudo cp mykey。关键/etc/ssl/private

让我们在服务器上启用SSL模式

Sudo a2enmod SSL

它应该像这样输出

让我们将apache2配置为使用上面生成的自签名证书和密钥。

sudo vi /放开

请找到这两行,并用您的证书和密钥路径替换它们。

最初的

最后

启用站点

cd /etc/apache2/sites-available / Sudo a2ensite default-ssl.conf

重新启动apache2服务

Sudo服务apache2重启

在HTTPS上验证apache2 web服务器。再次打开浏览器并输入

https://localhost:443

它应该输出如下内容,并警告您即将查看的页面不安全,因为我们已经使用自签名证书配置了服务器。

恭喜您已经将apache2配置为HTTPS端点,现在单击高级—>添加例外—>确认安全例外,您将再次看到默认页面。

我刚刚尝试了这一点-我需要在Windows上的本地主机Apache上测试一些开发代码。这比想象中要困难得多。但下面这些步骤在经历了多次拉扯之后还是有效的……

我发现我的Apache安装自带openssl.exe,这很有帮助。如果你没有副本,你需要下载。我的拷贝在Apache2\bin文件夹中,这就是我在下面引用它的方式。

步骤:

Ensure you have write permissions to your Apache conf folder Open a command prompt in Apache2\conf folder Type ..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem You can leave all questions blank except: PEM Passphrase: a temporary password such as "password" Common Name: the hostname of your server When that completes, type ..\bin\openssl rsa -in blarg.pem -out blarg.key Generate your self-signed certificate by typing: ..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365 Open Apache's conf\httpd.conf file and ensure SSL module is enabled - there should be no hash at the start of this line: LoadModule ssl_module modules/mod_ssl.so Some Apache installations place the SSL config in a separate file. If so, ensure that the SSL conf file is being included. In my case I had to uncomment this line: Include conf/extra/httpd-ssl.conf In the SSL config httpd-ssl.conf I had to update the following lines: Update SSLSessionCache "shmcb:C:\Program Files (x86)\Zend\Apache2/logs/ssl_scache(512000)" to SSLSessionCache "shmcb:C:/Progra\~2/Zend/Apache2/logs/ssl_scache(512000)" (The brackets in the path confuse the module, so we need to escape them) DocumentRoot - set this to the folder for your web files ServerName - the server's hostname SSLCertificateFile "conf/blarg.cert" SSLCertificateKeyFile "conf/blarg.key" Restart Apache. Try loading https://localhost/ in your browser.

希望你能做到这一步。请随时更新这篇文章与任何其他有用的信息。

(截图由Neil Obremski和他的有用文章提供——尽管现在已经过时了。)

2021年更新

我发布这个答案,因为我自己也在努力解决这个问题,Chrome更新了他们的安全性,要求主题替代名称,很多帖子都没有,因为当他们作为答案发布时,这是不需要的。我假设WAMP已经安装了。

步骤1

下载OpenSSL Light并安装


**STEP 2 (Optional)**

虽然这部分是可选的,但它使以后更容易执行命令。如果跳过此步骤,则必须提供执行该命令的openssl.exe的完整路径。如果你喜欢设置它,那么更新环境变量中的openssl.exe路径。

环境变量—>系统变量—> Path—> Edit—> New—> .单击“确定” c:\Program Files\ OpenSSL-Win64 \ bin


**STEP 3**

在c:/wamp64/bin/apache/apache2.4.27(你的版本号)/conf/目录下创建一个名为“key”的文件夹。

为您的CA MyCompanyCA.cnf创建配置文件(您可以根据需要更改它):

[ req ]
distinguished_name  = req_distinguished_name
x509_extensions     = root_ca

[ req_distinguished_name ]
countryName             = Country Name (2 letter code)
countryName_min         = 2
countryName_max         = 2
stateOrProvinceName     = State or Province Name (full name)
localityName            = Locality Name (eg, city)
0.organizationName      = Organization Name (eg, company)
organizationalUnitName  = Organizational Unit Name (eg, section)
commonName              = Common Name (eg, fully qualified host name)
commonName_max          = 64
emailAddress            = Email Address
emailAddress_max        = 64

[ root_ca ]
basicConstraints            = critical, CA:true

创建扩展配置文件MyCompanyLocalhost。您的web服务器证书的Ext:

subjectAltName = @alt_names
extendedKeyUsage = serverAuth

[alt_names]
DNS.1   = localhost
DNS.2   = mycy.mycompany.com

**STEP 4**

按指定顺序执行以下命令生成密钥和证书:

openssl req -x509 -newkey rsa:2048 -out MyCompanyCA.cer -outform PEM -keyout MyCompanyCA.pvk -days 10000 -verbose -config MyCompanyCA.cnf -nodes -sha256 -subj "/CN=MyCompany CA"
openssl req -newkey rsa:2048 -keyout MyCompanyLocalhost.pvk -out MyCompanyLocalhost.req -subj /CN=localhost -sha256 -nodes
openssl x509 -req -CA MyCompanyCA.cer -CAkey MyCompanyCA.pvk -in MyCompanyLocalhost.req -out MyCompanyLocalhost.cer -days 10000 -extfile MyCompanyLocalhost.ext -sha256 -set_serial 0x1111

因此,你将拥有MyCompanyCA。MyCompanyLocalhost cer。和MyCompanyLocalhost。pvk文件。


**STEP 5**

安装MyCompanyCA。cer下

控制面板->管理用户证书->受信任根 证书颁发机构->证书

安装MyCompanyLocalhost。Cer,双击它。


**STEP 6**

打开c:/wamp64/bin/apache/apache2.4.27(你的版本号)/conf/httpd.conf并取消注释(删除#)以下3行:

LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

**STEP 7**

打开“c:/wamp64/bin/apache/apache2.4.37/conf/extra/httpd-ssl.conf”,按如下所示修改所有参数。

Directory "c:/wamp64/www"
DocumentRoot "c:/wamp64/www"
ServerName localhost:443
ServerAdmin admin@example.com
ErrorLog "c:/wamp64/bin/apache/apache2.4.27/logs/error.log"
TransferLog "c:/wamp64/bin/apache/apache2.4.27/logs/access.log"
SSLCertificateFile "c:/wamp64/bin/apache/apache2.4.27/conf/key/MyCompanyLocalhost.cer"
SSLCertificateKeyFile "c:/wamp64/bin/apache/apache2.4.27/conf/key/MyCompanyLocalhost.pvk"
SSLSessionCache "shmcb:c:/wamp64/bin/apache/apache2.4.27/logs/ssl_scache(512000)"
CustomLog "c:/wamp64/bin/apache/apache2.4.27/logs/ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

注意:这是比较棘手的部分。如果在编辑此文件时犯了任何小错误,SSL将无法工作。编辑之前先复制一份。


**STEP 8**

重新启动Wamp和Chrome。Localhost现在是安全的:https://localhost