如何在本地主机上允许HTTPS for Apache?


Answers:


135

我刚刚尝试过-我需要在Windows上的localhost Apache上测试一些开发代码。这比应该做的要困难得多。但是以下是经过大量梳理后设法起作用的步骤...

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

脚步:

  1. 确保您对Apache conf文件夹具有写权限
  2. Apache2\conf文件夹中打开命令提示符
  3. 类型
    ..\bin\openssl req -config openssl.cnf -new -out blarg.csr -keyout blarg.pem
  4. 您可以将所有问题留为空白,但以下情况除外:

    • PEM密码:临时密码,例如“ password”
    • 通用名称:服务器的主机名

  5. 完成后,输入
    ..\bin\openssl rsa -in blarg.pem -out blarg.key

  6. 通过键入以下内容来生成您的自签名证书:
    ..\bin\openssl x509 -in blarg.csr -out blarg.cert -req -signkey blarg.key -days 365

  7. 打开Apache的conf\httpd.conf文件并确保启用了SSL模块-此行的开头不应有哈希:
    LoadModule ssl_module modules/mod_ssl.so

  8. 某些Apache安装将SSL配置放置在单独的文件中。如果是这样,请确保包含SSL conf文件。就我而言,我必须取消注释此行:
    Include conf/extra/httpd-ssl.conf

  9. 在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"

  10. 重新启动Apache。

  11. 尝试https://localhost/在浏览器中加载。

希望您能做到这一点。随时使用任何其他有用的信息更新此帖子。

(屏幕快照由Neil Obremski及其有益的文章提供,尽管现在已经过时了。)


2
谢谢。我还必须将ErrorLog,TransferLog和CustomLog指令编辑为有效路径,否则Apache将无法启动。
塔林

1
由于某种原因,指令不再有效或不完整
Jacobian 2014年

6
我必须在httpd.conf中取消注释以下内容才能使其正常工作:LoadModule socache_shmcb_module modules / mod_socache_shmcb.so
erik

1
我做了另外两个步骤,使其正常工作,添加了模块LoadModule socache_shmcb_module modules / mod_socache_shmcb.so,并在httpd-ssl.conf中,我在第250行更正了ssl日志路径,CustomLog“ .apache24 / logs / ssl_request.log” \
Wasim A 。

5
为了生成.pem和.key文件,我必须在步骤2设置2个环境变量:设置OPENSSL_CONF = C:\ path \ to \ apache \ Apache2.4.4 \ conf \ openssl.cnf设置RANDFILE = C:\路径\到\ apache \ Apache2.4.4 \ conf \ .rnd
eosphere,2017年

57

我为此使用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都指向本地主机。


1
@ sudip,ngrok的开源代码是否可以以某种方式工作而无需修改就可以在自己的服务器上托管它?如果不是这样,那几乎是一件大事,因为不能将用户请求重定向到ngrok之类的外部主机。
和平者

2
@Pacerier我不打算在服务器上使用它。我在本地主机上使用它(Bcz我的网络提供商为我提供了动态IP)。我第一次将它用于Paypal IPN测试,并且运行良好。我想知道为什么有人会在服务器上使用它,以及出于什么目的。
sudip

@sudip,目的很明显,即允许HTTP上的代码也可以与HTTPS一起使用,而无需额外的编码。
和平者

1
尽管这很有用,但允许您的开发机器访问开放的互联网似乎非常不安全。使用这种方法会使您被注重安全的雇主开除。
安迪M

@YumYumYum。在V 1之前它是完全免费的,但是http和https端口在v 2中仍然是免费的(不知道是否有任何端口限制是否有免费计划)。在此处查看免费计划:ngrok.com/product#pricing
sudip '16

24

这是最简单的方法

首先将这些server.crtserver.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>

3
我还必须在(/etc/apache2/httpd.conf)中启用模块LoadModule ssl_module libexec / apache2 / mod_ssl.so
Alexey,

17
我想知道从不受信任的来源而不是自己生成* .crt * .key文件的安全性/危险性。
Petr Peller

4
@PetrPeller我们正在为本地开发设置https,所以为什么要知道安全/危险
Anil Gupta

7
关于如何生成这些文件的说明会很棒。因为从未知来源下载文件是一种不好的做法,而且还因为这种链接有时会中断。
Stephan Vierkant


11

为了保护发送到Web服务器和从Web服务器发送的信息的安全性,最好对客户端和服务器之间的通信进行加密。这通常被称为 SSL

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

  • 在您的机器上安装apache2 Web服务器。对于linux机器,打开终端并输入

须藤apt-get install apache2

  • 成功安装后,通过执行以下命令检查apache2服务的状态

sudo服务apache2状态

它应该输出

apache2服务状态

  • 导航到浏览器并输入

http://本地主机:80

验证您是否获得了apache2这样的默认页面。

apache2的默认输出

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

openssl req -x509 -newkey rsa:2048 -keyout mykey.key -out mycert.pem -days 365 -nodes

请如下所示相应地填写信息。

使用openssl创建自签名证书

mykey.keymycert.pem应该在您当前的工作目录中创建。

  • 如果将证书和密钥放在一个公共位置,那将非常好,并且apache2 Web服务器将很容易找到它们。因此,让我们执行以下命令

须藤cp mycert.pem / etc / ssl / certs

须藤cp mykey.key / etc / ssl / private

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

须藤a2enmod ssl

它应该这样输出

启用ssl

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

须藤vi /etc/apache2/sites-available/default-ssl.conf

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

初始

默认配置

最后

配置更改后

  • 启用网站

cd / etc / apache2 / sites-available /

须藤a2ensite default-ssl.conf

  • 重新启动apache2服务

sudo服务apache2重新启动

  • 验证HTTPS上的apache2 Web服务器。再次打开浏览器并输入

https://本地主机:443

它应该输出类似这样的警告,警告您您要查看的页面不安全,因为我们已为服务器配置了自签名证书。

在此处输入图片说明

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

添加例外后的页面


如果可以的话,我不想编辑任何配置文件,所以我保持default-ssl.conf原样。我正要重命名mycert为,ssl-cert-snakeoil但是该文件已经存在,所以我只是使用它!这样我就可以安全地跳过关于Debian的两个步骤。
罗尔夫

@Rolf我同意你的看法,但在生产中,总是使用新的证书和密钥。因此,为了说明如何创建它们,我为Debian添加了2个附加步骤。谢谢:)
Dinesh Kumar

9

Windows + Apache 2.4,例如:

  1. httpd.conf文件中取消注释ssl_module 。

    LoadModule ssl_module modules/mod_ssl.so
    
  2. 监听443端口,就像httpd.conf文件中的80端口一样。

    Listen 80
    Listen 443
    
  3. 取消注释在httpd.conf文件中包括虚拟主机。

    # Virtual hosts
    Include conf/extra/httpd-vhosts.conf
    
  4. 在您的主机中添加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>
    

只有端口号443SSL......行与正常的http配置不同。

保存您的配置文件并重新启动apache服务。然后您可以访问https:// localhost /

网络浏览器会在第一次警告您不安全,只需选择继续。


这在XP Home,Apache 2.4上对我有用。复制了上一篇文章(由Anil Gupta提供)的2个证书文件。取消注释mod_ssl并在httpd.conf中包含httpd-vhosts.conf,在httpd-vhosts.conf中添加了Anil Gupta的VirtualHost指令(已调整了某些路径)。
jogi99 '16

7

假设您已经方便地安装了openssl,这实际上很容易。(您在哪个平台上?)

假设您使用的是linux / solaris / mac os / x,Van的Apache SSL / TLS mini-HOWTO具有出色的演练,在此不再赘述。

但是,执行摘要是您必须创建一个自签名证书。由于您正在为本地主机运行apache以进行开发(即不是公共Web服务器),因此您将知道可以信任自签名证书,而可以忽略浏览器将向您发出的警告。


嗨,我在Windows OS上工作。至于自签名证书,我是否必须下载或通过其他任何方式下载?
KennC。

3
不。您将自己制作自签名证书。您是否有apache httpd + ssl设置?您需要ssl才能执行此操作。该站点:rubayathasan.com/tutorial/apache-ssl-on-windows具有有关使ssl在Windows上运行的良好信息。您将要做一些命令行工作,但这仍然对您有好处。:-)
皮特·克拉克

3
链接已死:(
kpuccino

是的-它看起来确实已经死了。那就是您的互联网...但是,@kayakinkoder引用的下面的CentOS Wiki的链接也很好:wiki.centos.org/HowTos/Https如果您使用的是Mac,则本文看起来也很合理:要点。 github.com/nrollr/4daba07c67adcb30693e
皮特·克拉克

4

这应该是Ubuntu,Mint与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有帮助


2

很简单

只需运行以下命令

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
直到

2

2019更新

我发布这个答案是因为我自己为此苦苦挣扎,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.cerMyCompanyLocalhost.cerMyCompanyLocalhost.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



1

这在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.crtserver.key文件添加到C:/Apache24/conf/ssl夹中。查看此页面上的其他答案以查找这两个文件。

而已!


是的,这可行。我使用了StephanieQ的步骤1-3来生成证书,然后使用“ openssl x509 -req -in server.csr -signkey server.key -out server.crt”来生成cygwin的* .crt文件。
b3wii

1

tl; dr

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

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

Serveo是最好的

  • 没有注册。
  • 没有安装。
  • 有HTTPS。
  • 在世界范围内均可访问。
  • 您可以指定自定义修订子域。
  • 您可以对其进行自我托管,因此即使服务中断,您也可以使用自己的域并作未来证明。

找到服务后,我简直不敢相信。它提供了所有功能,并且最容易使用。如果有一个简单而轻松的工具来解决每个问题...


1

在此处在Windows 10上运行Apache。我无法让Chrome信任西蒙在最高答案中做出的证书。我最终要做的是使用PowerShell生成自签名证书。

第1步-生成自签名证书

在PowerShell
New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My" 1中

第2步-配置和导出证书

键入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文件)

第3步-转换.pfx文件以与Apache一起使用

从这里开始,我基本上按照这里的教程进行操作,但是如果站点出现故障,我将在此处添加说明(针对我们的设置进行了调整)。

/apache/conf/文件夹中打开命令提示符,
运行以下命令:注意:假设您已经openssl.exebinapache根文件夹的文件夹中(这应该是标准/默认)

..\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.pemconf/

现在生成相应的服务器证书。跑:

..\bin\openssl pkcs12 -in myCert.pfx -clcerts -nokeys -out EntrustCert.pem

这将提示您输入密码,并在导出.pfx文件时输入在步骤2中输入的内容。输入它,您的文件夹中现在将有一个名为EntrustCert.pemconf文件。 这是您的SSLCertificateFile

第4步-配置 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

第5步-配置 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

进行了这些更改之后,您应该能够重新启动Apache并导航到https:// localhost,而不会出现安全警告和一些挂锁!

受保护的本地主机

我希望这可以帮助别人!😊

来源:
1.)Auri Rahimzadeh关于创建自签名证书的答案
2.)委托数据卡-如何转换.pfx以与Apache服务器一起使用?


0

另一个简单的方法是在Ubuntu中使用Python Server。

  1. 在终端中使用以下命令生成server.xml:

    openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes

    注意:假设您已安装openssl

  2. 将以下代码保存在要运行服务器的任何目录中的文件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()
    
  3. 从终端运行服务器:

    python simple-https-server.py

  4. 请访问以下页面:

    https://localhost:4443

附加说明

  1. 您可以在文件中更改端口simple-https-server.py

    httpd = BaseHTTPServer.HTTPServer(('localhost', 4443), SimpleHTTPServer.SimpleHTTPRequestHandler)

  2. 您可以在上面的同一行中更改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/


0

对于使用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

但是您需要遵循一些步骤,因此请检查并祝您好运!;)


0

我想在@CodeWarrior的很好答案中添加一些内容,该内容在Chrome上可以完美运行,但是对于Firefox,还需要执行其他步骤。

由于Firefox不会强制使用Windows默认提供的CA证书,因此您需要继续about:config,向下滚动到security.enterprise_roots.enabled 并将其更改为true。

现在,您的证书在Firefox上也应视为有效。

当然,这仅出于开发目的,因为ssl信任是至关重要的安全问题,只有在您知道其含义后才能更改此设置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.