我被要求在Apache上的localhost上使用自签名证书设置HTTPS,但我实际上如何做到这一点?我完全不知道。
当前回答
这个HowTo for CentOS很简单,只花了大约5分钟:https://wiki.centos.org/HowTos/Https
我不会在这里详细介绍每一步,但主要步骤如下:
1)。安装apache的openssl模块(如果尚未安装)
2)。生成自签名证书
—此时,您应该能够成功访问https://localhost
3)。如果需要,可以设置一个虚拟主机
其他回答
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
为此我使用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。
另一个简单的方法是在Ubuntu中使用Python Server。
Generate server.xml with the following command in terminal: openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes Note: Assuming you have openssl installed. Save below code in a file named simple-https-server.py in any directory you want to run the server. import BaseHTTPServer, SimpleHTTPServer import ssl httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler) httpd.socket = ssl.wrap_socket (httpd.socket, certfile='./server.pem', server_side=True) httpd.serve_forever() Run the server from terminal: python simple-https-server.py Visit the page at: https://localhost:4443
额外的笔记:
You can change the port in simple-https-server.py file in line httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler) You can change localhost to your IP in the same line above: httpd = BaseHTTPServer.HTTPServer(('10.7.1.3', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler) and access the page on any device your network connected. This is very handy in cases like "you have to test HTML5 GeoLocation API in a mobile, and Chrome restricts the API in secure connections only".
要点:https://gist.github.com/dergachev/7028596
http://www.piware.de/2011/01/creating-an-https-server-in-python/
对于那些使用macOS的人来说,这是一个很好的指南https://getgrav.org/blog/macos-sierra-apache-multiple-php-versions来设置您的本地web开发环境。在第三部分https://getgrav.org/blog/macos-sierra-apache-ssl Andy Miller解释了如何使用自签名证书设置apache:
这是关键命令:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt
但有几个步骤你需要遵循,所以检查,祝你好运!,)
这应该是工作Ubuntu,薄荷类似于Apache2
这是一个很好的指南,所以遵循这个
https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-14-04
然后像这样留下ssl。conf
<VirtualHost _default_:443>
ServerAdmin your@email.com
ServerName localhost
ServerAlias www.localhost.com
DocumentRoot /var/www
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
你可以得到它。
希望这对linuxer有帮助
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用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 ?