Answers:
我刚刚尝试过-我需要在Windows上的localhost Apache上测试一些开发代码。这比应该做的要困难得多。但是以下是经过大量梳理后设法起作用的步骤...
我发现安装了Apache openssl.exe
很有帮助。如果没有副本,则需要下载。我的副本在Apache2\bin
文件夹中,这是我在下面引用它的方式。
脚步:
Apache2\conf
文件夹中打开命令提示符..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
您可以将所有问题留为空白,但以下情况除外:
完成后,输入
..\bin\openssl rsa -in blarg.pem -out blarg.key
通过键入以下内容来生成您的自签名证书:
..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365
打开Apache的conf\httpd.conf
文件并确保启用了SSL模块-此行的开头不应有哈希:
LoadModule ssl_module modules/mod_ssl.so
某些Apache安装将SSL配置放置在单独的文件中。如果是这样,请确保包含SSL conf文件。就我而言,我必须取消注释此行:
Include conf/extra/httpd-ssl.conf
在SSL配置中,httpd-ssl.conf
我必须更新以下几行:
SSLSessionCache "shmcb:C:\Program Files (x86)\Zend\Apache2/logs/ssl_scache(512000)"
SSLSessionCache "shmcb:C:/Progra\~2/Zend/Apache2/logs/ssl_scache(512000)"
DocumentRoot
-将此设置为您的Web文件的文件夹ServerName
-服务器的主机名SSLCertificateFile "conf/blarg.cert"
SSLCertificateKeyFile "conf/blarg.key"
重新启动Apache。
https://localhost/
在浏览器中加载。希望您能做到这一点。随时使用任何其他有用的信息更新此帖子。
(屏幕快照由Neil Obremski及其有益的文章提供,尽管现在已经过时了。)
我为此使用ngrok(https://ngrok.com/)。ngrok是一个命令行工具,可为localhost创建一个隧道。它同时创建http和https连接。下载后,需要运行以下命令:
ngrok http 80
(在版本2中,语法为:ngrok http80。在版本2中,可以通过隧道传输任何端口。)
几秒钟后,它将给出两个网址:
http://a_hexadecimal_number.ngrok.com
https://a_hexadecimal_number.ngrok.com
现在,两个URL都指向本地主机。
这是最简单的方法
首先将这些server.crt和server.key文件(在附件中找到)复制到您的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>
为了保护发送到Web服务器和从Web服务器发送的信息的安全性,最好对客户端和服务器之间的通信进行加密。这通常被称为 SSL。
因此,让我们在Apache2上使用自签名证书设置HTTPS。我将列出您应该遵循的步骤:
须藤apt-get install apache2
sudo服务apache2状态
它应该输出
验证您是否获得了apache2这样的默认页面。
openssl req -x509 -newkey rsa:2048 -keyout mykey.key -out mycert.pem -days 365 -nodes
请如下所示相应地填写信息。
mykey.key和mycert.pem应该在您当前的工作目录中创建。
须藤cp mycert.pem / etc / ssl / certs
须藤cp mykey.key / etc / ssl / private
须藤a2enmod ssl
它应该这样输出
须藤vi /etc/apache2/sites-available/default-ssl.conf
请找到这两行,并用您的证书和密钥路径替换它们。
初始
最后
cd / etc / apache2 / sites-available /
须藤a2ensite default-ssl.conf
sudo服务apache2重新启动
它应该输出类似这样的警告,警告您您要查看的页面不安全,因为我们已为服务器配置了自签名证书。
default-ssl.conf
原样。我正要重命名mycert
为,ssl-cert-snakeoil
但是该文件已经存在,所以我只是使用它!这样我就可以安全地跳过关于Debian的两个步骤。
Windows + Apache 2.4,例如:
在httpd.conf
文件中取消注释ssl_module 。
LoadModule ssl_module modules/mod_ssl.so
监听443端口,就像httpd.conf
文件中的80端口一样。
Listen 80
Listen 443
取消注释在httpd.conf
文件中包括虚拟主机。
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
在您的主机中添加VirtualHost conf/extra/httpd-vhosts.conf
<VirtualHost _default_:443>
DocumentRoot "D:/www" #your site directory path
ServerName localhost
#ServerAlias localhost.com localhost2.com
SSLEngine on
SSLCertificateFile "${SRVROOT}/conf/ssl/server.crt"
SSLCertificateKeyFile "${SRVROOT}/conf/ssl/server.key"
<Directory "D:/www">
Options -Indexes +FollowSymLinks +ExecCGI
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
只有端口号443
和SSL......
行与正常的http配置不同。
保存您的配置文件并重新启动apache服务。然后您可以访问https:// localhost /
网络浏览器会在第一次警告您不安全,只需选择继续。
假设您已经方便地安装了openssl,这实际上很容易。(您在哪个平台上?)
假设您使用的是linux / solaris / mac os / x,Van的Apache SSL / TLS mini-HOWTO具有出色的演练,在此不再赘述。
但是,执行摘要是您必须创建一个自签名证书。由于您正在为本地主机运行apache以进行开发(即不是公共Web服务器),因此您将知道可以信任自签名证书,而可以忽略浏览器将向您发出的警告。
这应该是Ubuntu,Mint与Apache2类似的作品
这是一个很好的指南,因此请遵循
并让您的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有帮助
很简单
只需运行以下命令
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
systemctl reload apache2
追赶sudo a2ensite default-ssl.conf
。
我发布这个答案是因为我自己为此苦苦挣扎,Chrome要求提供使用者替代名称来更新其安全性,因为许多帖子都没有此,因为这些在作为答案发布时并不需要。我假设已经安装了WAMP。
第1步
下载OpenSSL Light并安装
步骤2(可选)
尽管此部分是可选的,但它使以后执行命令更加容易。如果跳过此步骤,则必须提供openssl.exe的完整路径,您将在其中执行命令。如果您希望进行设置,请更新环境变量中的openssl.exe路径。
环境变量->系统变量->路径->编辑->新建-> c:\ Program Files \ OpenSSL-Win64 \ bin
步骤3
创建一个名为文件夹“钥匙”在c:/wamp64/bin/apache/apache2.4.27(your version number)/conf/
目录中。
使用内容为您的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
为您的Web服务器证书创建扩展配置文件MyCompanyLocalhost.ext:
subjectAltName = @alt_names
extendedKeyUsage = serverAuth
[alt_names]
DNS.1 = localhost
DNS.2 = mycy.mycompany.com
第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.cer,MyCompanyLocalhost.cer和MyCompanyLocalhost.pvk文件。
步骤5
在下面安装MyCompanyCA.cer
控制面板->管理用户证书->受信任的根证书颁发机构->证书
要安装MyCompanyLocalhost.cer,只需双击它。
步骤6
打开c:/wamp64/bin/apache/apache2.4.27(your version number)/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
步骤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无法使用。编辑之前,请对其进行复制。
步骤8
重新启动Wamp和Chrome。Localhost现在是安全的:https:// localhost
这个用于CentOS的HowTo很容易理解,只花了大约5分钟:https://wiki.centos.org/HowTos/Https
我不会在这里详细说明每个步骤,但是主要步骤是:
1.)为Apache安装openssl模块(如果尚未安装)
2.)生成自签名证书
-至此,您应该能够成功访问https:// localhost
3.)如果需要,设置虚拟主机
这在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-将server.crt
和server.key
文件添加到C:/Apache24/conf/ssl
夹中。查看此页面上的其他答案以查找这两个文件。
而已!
ssh -R youruniquesubdomain:80:localhost:3000 serveo.net
您可以从https://youruniquesubdomain.serveo.net访问您的本地环境
找到服务后,我简直不敢相信。它提供了所有功能,并且最容易使用。如果有一个简单而轻松的工具来解决每个问题...
在此处在Windows 10上运行Apache。我无法让Chrome信任西蒙在最高答案中做出的证书。我最终要做的是使用PowerShell生成自签名证书。
在PowerShell
New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"
1中
键入Certificate
到Windows搜索栏,单击Manage Computer Certificates
建议控制面板项。
现在,从出现的证书管理程序(certlm)中,您应该看到一个localhost
密钥Personal >> Certificates
。
我将此证书复制到中Trusted Root Certification Authorities
。老实说,我不确定是否有必要。
选择新复制的证书,双击它(本地主机证书)。在“证书”模式中,点击Details
标签,然后点击Copy to File...
按钮。
这将弹出导出向导,我选择导出私钥,单击下一步。我还选择了Export all extended properties
(再次,我不确定是否有必要)。我选择使用简单的密码(pass
)和默认加密。选择要导出到的文件夹并命名文件。如有必要,您始终可以移动并重命名文件。为简单起见,让我们将其复制到Apache安装目录下的conf文件夹中(在我的情况下:)C:\apache\conf
并命名该文件myCert
(生成的文件将是.pfx
文件)
.pfx
文件以与Apache一起使用从这里开始,我基本上按照这里的教程进行操作,但是如果站点出现故障,我将在此处添加说明(针对我们的设置进行了调整)。
在/apache/conf/
文件夹中打开命令提示符,
运行以下命令:注意:假设您已经openssl.exe
在bin
apache根文件夹的文件夹中(这应该是标准/默认)
..\bin\openssl pkcs12 -in myCert.pfx -nocerts -out privateKey.pem
这将提示您输入密码,并在导出.pfx
文件时输入在步骤2中输入的内容。就我而言,这是pass
。我为PEM短语输入了相同的密码,然后再次进行验证。这将privateKey.pem
在conf文件夹中创建一个新文件。
然后跑
..\bin\openssl rsa -in privateKey.pem -out private.pem
再次提示您输入密码(Enter pass phrase for privateKey.pem:
),使用为设置的密码privateKey.pem
。(以我为例pass
),
您应该在文件夹中看到一条消息writing RSA key
和一个名为的新文件。这将是您的SSLCertificateKeyFile。private.pem
conf/
现在生成相应的服务器证书。跑:
..\bin\openssl pkcs12 -in myCert.pfx -clcerts -nokeys -out EntrustCert.pem
这将提示您输入密码,并在导出.pfx
文件时输入在步骤2中输入的内容。输入它,您的文件夹中现在将有一个名为EntrustCert.pem
的conf
文件。 这是您的SSLCertificateFile
httpd.conf
使用作为服务器的密钥和证书创建的新文件。确保将文档根目录更改为文件所在的位置!
ServerName localhost:80
Protocols h2 h2c http/1.1
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<VirtualHost _default_:443>
ServerName localhost:443
DocumentRoot ${SRVROOT}/htdocs/MYSITE
SSLEngine on
SSLCertificateFile "${SRVROOT}/conf/EntrustCert.pem"
SSLCertificateKeyFile "${SRVROOT}/conf/private.pem"
</VirtualHost>
也位于httpd.conf
:
LoadModule ssl_module modules/mod_ssl.so
没有评论#
(前面没有)LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule http2_module modules/mod_http2.so
Include conf/extra/httpd-ssl.conf
(注意:请确保文件在这里!)我也有curl和开放的ssl库,包括:
# load curl and open ssl libraries
LoadFile "C:\php\libeay32.dll"
LoadFile "C:\php\ssleay32.dll"
LoadFile "C:\php\libssh2.dll"
这些模块不是必需的,但我会注意到已启用它们:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule filter_module modules/mod_filter.so
LoadModule deflate_module modules/mod_deflate.so
httpd-ssl.conf
在extra/
文件夹中的conf/
文件夹中,您应该看到一个名为httpd-ssl.conf
。
5a。更改DocumentRoot
- DocumentRoot
将默认值更改为文件所在的目录。
5b。更改ServerName
- ServerName
将默认值(如www.example.com:443
)更改为localhost:443
5c。将SSLCertificateFile
更改SSLCertificateFile
从默认(${SRVROOT}/conf/server.crt
)更改为${SRVROOT}/conf/EntrustCert.pem
5c。将SSLCertificateKeyFile
更改SSLCertificateKeyFile
从默认(${SRVROOT}/conf/server.key
)更改为${SRVROOT}/conf/private.pem
在一起,在<VirtualHost _default_:443>
标记中。
# General setup for the virtual host
DocumentRoot "${SRVROOT}/htdocs/MYSITE"
ServerName localhost:443
ServerAdmin admin@example.com
ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. Keep
# in mind that if you have both an RSA and a DSA certificate you
# can configure both in parallel (to also allow the use of DSA
# ciphers, etc.)
# Some ECC cipher suites (http://www.ietf.org/rfc/rfc4492.txt)
# require an ECC certificate which can also be configured in
# parallel.
SSLCertificateFile "${SRVROOT}/conf/EntrustCert.pem"
#SSLCertificateFile "${SRVROOT}/conf/server-dsa.crt"
#SSLCertificateFile "${SRVROOT}/conf/server-ecc.crt"
# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
# ECC keys, when in use, can also be configured in parallel
SSLCertificateKeyFile "${SRVROOT}/conf/private.pem"
#SSLCertificateKeyFile "${SRVROOT}/conf/server-dsa.key"
#SSLCertificateKeyFile "${SRVROOT}/conf/server-ecc.key"
进行了这些更改之后,您应该能够重新启动Apache并导航到https:// localhost,而不会出现安全警告和一些挂锁!
我希望这可以帮助别人!😊
来源:
1.)Auri Rahimzadeh关于创建自签名证书的答案
2.)委托数据卡-如何转换.pfx以与Apache服务器一起使用?
另一个简单的方法是在Ubuntu中使用Python Server。
在终端中使用以下命令生成server.xml:
openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
注意:假设您已安装openssl。
将以下代码保存在要运行服务器的任何目录中的文件simple-https-server.py
中。
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()
从终端运行服务器:
python simple-https-server.py
请访问以下页面:
https://localhost:4443
附加说明:
您可以在文件中更改端口simple-https-server.py
httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
您可以在上面的同一行中更改localhost
为IP:
httpd = BaseHTTPServer.HTTPServer(('10.7.1.3', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)
并在网络连接的任何设备上访问该页面。在“您必须在移动设备上测试HTML5 GeoLocation API,而Chrome仅将API限制在安全连接中”的情况下,这非常方便。
要点:https : //gist.github.com/dergachev/7028596
http://www.piware.de/2011/01/creating-an-https-server-in-python/
对于使用macOS的用户来说,这是一个很棒的指南,可用来设置本地Web开发环境https://getgrav.org/blog/macos-sierra-apache-multiple-php-versions。在其第三部分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
但是您需要遵循一些步骤,因此请检查并祝您好运!;)
ssh -R youruniquesubdomain:80:localhost:3000 serveo.net
拍打您的子域和端口号,就可以继续进行https://youruniquesubdomain.serveo.net