我被要求在Apache上的localhost上使用自签名证书设置HTTPS,但我实际上如何做到这一点?我完全不知道。
当前回答
为了保护发送到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端点,现在单击高级—>添加例外—>确认安全例外,您将再次看到默认页面。
其他回答
我想在@CodeWarrior的非常好的回答中添加一些东西,这在Chrome上完美地工作,但对于Firefox需要额外的步骤。
由于Firefox不支持默认情况下Windows提供的CA证书,您需要继续:config,向下滚动到security.enterprise_root。Enabled并将其更改为true。
现在,您的证书在Firefox上也应该是有效的。
当然,这仅用于开发目的,因为ssl信任是一个关键的安全问题,只有在知道其影响时才更改此设置。
为了保护发送到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端点,现在单击高级—>添加例外—>确认安全例外,您将再次看到默认页面。
这是最简单的方法
首先复制这些服务器。CRT &服务器。关键文件(见附件)到apache/conf/ssl目录
然后打开httpd.conf文件并添加以下行
Listen 80
Listen 443
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:443>
DocumentRoot "d:/wamp/www" #your wamp www root dir
ServerName localhost
SSLEngine on
SSLCertificateFile "d:/wamp/bin/apache/Apache2.4.4/conf/ssl/server.crt"
SSLCertificateKeyFile "d:/wamp/bin/apache/Apache2.4.4/conf/ssl/server.key"
</VirtualHost>
这适用于Windows 10和Apache24:
1 -将此添加到C:/Apache24/conf/httpd.conf的底部
Listen 443
<VirtualHost *:443>
DocumentRoot "C:/Apache24/htdocs"
ServerName localhost
SSLEngine on
SSLCertificateFile "C:/Apache24/conf/ssl/server.crt"
SSLCertificateKeyFile "C:/Apache24/conf/ssl/server.key"
</VirtualHost>
2—添加服务器。CRT和服务器。打开“C:/Apache24/conf/ssl”文件夹下的key文件。请参阅本页上的其他答案,以找到这两个文件。
就是这样!
为此我使用ngrok (https://ngrok.com/)。 Ngrok是一个命令行工具,用于为本地主机创建隧道。它同时创建http和https连接。 下载完成后,需要执行以下命令:
ngrok http 80
(在版本2中,语法是:ngrok http 80。在版本2中,任何端口都可以通过隧道。)
几秒钟后,它会给出两个url:
http://a_hexadecimal_number.ngrok.com
https://a_hexadecimal_number.ngrok.com
现在,两个url都指向localhost。
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 如何从同一网络上的另一台计算机连接到此本地主机?
- 在Cygwin中对HTTPS URL运行wget时,如何修复证书错误?
- CFNetwork SSLHandshake iOS 9失败
- HTTPS和SSL3_GET_SERVER_CERTIFICATE:证书验证失败,CA is OK
- c#忽略证书错误?
- 如何找出如果你使用HTTPS没有$_SERVER['HTTPS']
- 最好的方法在asp.net强制https为整个网站?
- 127.0.0.1和localhost之间的区别是什么
- 如何允许本地主机上的Apache使用HTTPS ?
- XAMPP -端口80被PID 4的“无法打开进程”使用!12
- 如何让Chrome允许混合内容?
- 无法识别的SSL消息,明文连接?异常
- 为什么对Apache提供的文本文件使用deflate而不是gzip ?