在wamp服务器中安装SSL:httpd-ssl.conf中的错误

Amm*_*han 15 ssl wampserver ssl-certificate apache2.4

我正在尝试在本地主机上设置ssl我已经删除了http://madurad.wordpress.com/2014/04/25/redirect-http-to-https-with-wamp-server/以及其他许多但无法获取成功.我坚持使用httpd-ssl.conf的语法.当我设置时,我的apache服务器停机了

<Directory "c:/wamp/www/"> 
   Options Indexes FollowSymLinks  
   AllowOverride all 
   Require all granted 
   SSLOptions +StdEnvVars
</Directory>
Run Code Online (Sandbox Code Playgroud)

我尝试了许多其他的喜欢

<Directory "c:/wamp/www/"> 
   SSLOptions +StdEnvVars
</Directory>
Run Code Online (Sandbox Code Playgroud)

什么是无法得到的问题....

Rig*_*lly 72

如何配置WAMPServer以使用HTTPS SSL

*这不是一个简单的过程.希望本教程能让SSL为您服务.但是,一旦它正常工作,正确配置它是完全没有你的.

所有前往这条路的人都可以阅读

好,

我在本教程的基础上创建了一个名为www.wamphelpers.dev的站点.因此,当您看到该名称将其更改为您尝试保护的站点名称时.

我开始在\ wamp\www\wamphelpers中创建一个不安全的站点

为该网站添加了一个虚拟主机 \wamp\bin\apache\apache{version}\conf\extra\httpd-vhosts.conf

<VirtualHost *:80>
    DocumentRoot "c:/wamp/www"
    ServerName localhost
    ServerAlias localhost
    <Directory  "c:/wamp/www">
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "c:/wamp/www/wamphelpers"
    ServerName wamphelpers.dev
    ServerAlias www.wamphelpers.dev
    <Directory  "c:/wamp/www/wamphelpers">
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

将其域名添加到C:\ windows\system32\drivers\etc\hosts

某些病毒检查程序阻止访问HOSTS文件,因此您可能需要禁用病毒检查程序,或将其配置为不暂时阻止主机文件.

127.0.0.1 wamphelpers.dev www.wamphelpers.dev
::1       wamphelpers.dev www.wamphelpers.dev
Run Code Online (Sandbox Code Playgroud)

现在从使用"以管理员身份运行"启动的命令窗口重新启动dnscache,如下所示

net stop dnscache
net start dnscache
Run Code Online (Sandbox Code Playgroud)

然后在\ wamp\www\wamphelpers\index.php中创建了一个简单的脚本

<?php
    echo 'Hello, this is the WAMPHELPERS.DEV site homepage';
?>
Run Code Online (Sandbox Code Playgroud)

现在激活已定义的新虚拟主机,编辑\wamp\bin\apache\apache{version}\conf\httpd.conf并找到此行

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
Run Code Online (Sandbox Code Playgroud)

并删除#注释字符,如此

# Virtual hosts
Include conf/extra/httpd-vhosts.conf
Run Code Online (Sandbox Code Playgroud)

保存文件.

现在重新启动Apache并确保您的简单不安全的虚拟托管站点在继续之前正在运行.


openssl工具包. openssl.exe,ssleay32.dll和libeay32.dll附带,位于C:\ wamp\bin\apache\apachex.yz\bin文件夹中这应该是创建自签名证书所需的全部内容!

但是:这些对我来说在我安装的任何Apache版本上都不起作用.我总是收到此错误消息.

错误信息

根据我所在的apache版本文件夹,序号发生了变化.

如果你得到这个错误不要担心这是你需要做的.

安装最新版本的OPENSSL TOOLKIT

这可以从这里获得

注意:不要使用V1.1版本,PHP团队还没有用这些新的链接编译PHP,所以坚持使用V1.0.版本直到他们这样做.

选择最新版本的'Win32 OpenSSLv xxx Light'或'Win64 OpenSSLv xxx Light'以匹配您安装的WAMPServer版本,因为这就是您所需要的.

这将下载一个.exe文件,您可以运行该文件来安装此工具包.

它会问下面这个问题,我建议你像这样回答它,所以你不要在C:\ windows\system32中安装一些东西.毕竟这是一个工具包,它经常变化.最好将这些东西分开,不要让它们成为全球系统.

openssl安装建议

一旦安装(对于您在安装中指定的任何文件夹),您应该准备好开始生成密钥和证书的过程!


生成密钥和证书.

第1步:生成RSA私钥

首先,我们需要创建自己的证书.正常(付费)流程是创建证书,然后将其传递给签名机构.这就是为什么花钱,因为他们必须做的,尽职尽责,检查你是谁,你会说你是谁,你将使用证书的网站是真实和合法的.

openssl工具包用于生成RSA私钥和CSR(证书签名请求)以用于我们的证书.第一步是创建RSA私钥.此密钥是1024位RSA密钥,使用Triple-DES加密并以PEM格式存储,以便可以作为ASCII文本读取.

使用[b]以管理员身份运行[/ b]将目录更改为上面安装OpenSSL Toolkit的位置,打开命令窗口(Dos框).就我而言,这是

CD c:\apps\OpenSSL-Win32\bin
Run Code Online (Sandbox Code Playgroud)

为输出设置一个文件夹(以保持bin文件夹整洁)我使用的网站

md website
Run Code Online (Sandbox Code Playgroud)

现在输入以下命令:

openssl genrsa -out website\server.key 2048
Run Code Online (Sandbox Code Playgroud)

这应该在名为server.key的网站文件夹中创建一个文件,没有密码短语,检查它是否存在.

第2步:生成CSR(证书签名请求)

在生成CSR期间,系统将提示您输入多条信息.这些是证书的X.509属性.其中一个提示将是"公共名称(例如服务器FQDN或您的名字)[]:". 请务必使用SSL保护的服务器的完全限定域名填写此字段. 因此,如果要保护的网站是https://www.wamphelpers.dev,请www.wampheplers.dev在此提示符下输入.我用的wamphelper.dev是我ServerNameServerName wamphelpers.dev

不要在问题中输入任何内容:质询密码[]: ]只需按Enter即可.如果您在此处输入密码,那么当您使用SSL启动Apache时,Apache将无法启动并将显示以下错误消息: -

[error] Init:Win32不支持SSLPassPhraseDialog builtin

基本上如果你输入密码,Apache应该在每次启动时挑战你的密码.这显然不会让你的生活变得更轻松,但主要是在Windows上实际上并不起作用,并且当它试图询问密码时会导致Apache崩溃,并出现上述错误.

生成CSR的命令如下:

openssl req -new -key website\server.key -out website\server.csr


Example question and answers:
Country Name (2 letter code) [AU]:GB
State or Province Name (full name) [Some-State]: Hampshire
Locality Name (eg, city) []: Portsmouth
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Wamp Helpers Ltd
Organizational Unit Name (eg, section) []: Information Technology
Common Name (e.g. server FQDN or YOUR name) []: wamphelpers.dev
Email Address []: me@wamphelpers.dev

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ( leave blank just hit the enter key )
An optional company name []: ( leave blank just hit the enter key )
Run Code Online (Sandbox Code Playgroud)

第3步:生成自签名证书

此时,您需要生成自签名证书,因为您不打算让CA签署证书,或者您希望在CA签署证书时测试新的SSL实施.

PRE - WARNING 此证书将在客户端浏览器中生成错误,导致签名证书颁发机构未知且不受信任.这是不可避免的,因为我们自己签署证书,但当然信任网络不知道我们是谁. 请参阅本文档后面的示例,其中显示了如何告诉浏览器您确实信任此证书

openssl x509 -req -days 365 -in website\server.csr -signkey website\server.key -out website\server.crt


Example output:
Loading 'screen' into random state - done
Signature ok
subject=/C=GB/ST=Hampshire/L=Portsmouth/O=WampHelpers Ltd/OU=Information Technology/CN=www.wamphelpers.dev/emailAddress=riggsfolly@wamphelpers.dev
Getting Private key
Run Code Online (Sandbox Code Playgroud)

第4步:安装私钥和证书

在您正在使用的Apache版本下创建这两个目录.

md c:\wamp\bin\apache\apachex.y.z\conf\ssl.key
md c:\wamp\bin\apache\apachex.y.z\conf\ssl.crt
Run Code Online (Sandbox Code Playgroud)

并将我们刚刚生成的文件复制到其中,如下所示:

copy website\server.crt c:\wamp\bin\apache\apachex.y.z\conf\ssl.crt
copy website\server.key c:\wamp\bin\apache\apachex.y.z\conf\ssl.key
Run Code Online (Sandbox Code Playgroud)

步骤5:配置Apache以激活SSL

编辑httpd.conf,检查此行是否已取消注释

LoadModule authn_socache_module modules/mod_authn_socache.so

LoadModule ssl_module modules/mod_ssl.so

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Run Code Online (Sandbox Code Playgroud)

同时从此行中删除评论"#"

Include conf/extra/httpd-ssl.conf
Run Code Online (Sandbox Code Playgroud)

然后在此块之后移动该行....就像这样

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

# Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf
Run Code Online (Sandbox Code Playgroud)

步骤6:配置PHP以激活SSL

编辑你的php.ini(使用wampmanager菜单,以便你编辑正确的)

删除评论';' 从这条线

extension=php_openssl.dll
Run Code Online (Sandbox Code Playgroud)

步骤7:配置安全站点虚拟主机

对于你所有的虚拟主机nay说,你现在无法避免这个过程.

编辑 \wamp\bin\apache\apachex.y.z\conf\extra\httpd-ssl.conf

此文件由Apache发布,包含一些默认文件位置.我们可以保留这个文件的大部分内容,但是我们需要在这里配置虚拟主机以匹配我们的实际站点位置和其他一些内容:

找到这些线

DocumentRoot "c:/Apache2/htdocs"
ServerName www.example.com:443
ServerAdmin admin@example.com
ErrorLog "c:/Apache2/logs/error.log"
TransferLog "c:/Apache2/logs/access.log"
Run Code Online (Sandbox Code Playgroud)

并将它们改为

DocumentRoot "c:/wamp/www/wamphelpers"
ServerName wamphelpers.dev:443
ErrorLog "c:/wamp/logs/ssl_error.log"
TransferLog "c:/wamp/logs/ssl_access.log"
Run Code Online (Sandbox Code Playgroud)

SSLCertificateFile "c:/Apache2/conf/server.crt"
Run Code Online (Sandbox Code Playgroud)

并改为

SSLCertificateFile "c:/wamp/bin/apache/apachex.y.x/conf/ssl.crt/server.crt"
Run Code Online (Sandbox Code Playgroud)

SSLCertificateKeyFile "c:/Apache2/conf/server.key"
Run Code Online (Sandbox Code Playgroud)

并改为

SSLCertificateKeyFile "c:/wamp/bin/apache/apachex.y.x/conf/ssl.key/server.key"
Run Code Online (Sandbox Code Playgroud)

<Directory "c:/Apache2/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>
Run Code Online (Sandbox Code Playgroud)

并改为

Apache 2.2语法

<Directory "c:/wamp/www/wamphelpers">
    SSLOptions +StdEnvVars
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1 localhost ::1
</Directory>
Run Code Online (Sandbox Code Playgroud)

Apache 2.4语法

<Directory "c:/wamp/www/wamphelpers">
    SSLOptions +StdEnvVars
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require local
</Directory>
Run Code Online (Sandbox Code Playgroud)

SSLSessionCache        "shmcb:c:/Apache2/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300
Run Code Online (Sandbox Code Playgroud)

并将其更改为

SSLSessionCache        "shmcb:c:/wamp/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300
Run Code Online (Sandbox Code Playgroud)

CustomLog "c:/Apache24/logs/ssl_request.log" \
      "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
Run Code Online (Sandbox Code Playgroud)

并改为

CustomLog "c:/wamp/logs/ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
Run Code Online (Sandbox Code Playgroud)

基本上查看conf文件和任何未注释掉的命令,但是应该更改引用文件或文件夹以引用WAMPServer文件夹结构而不是'C:/ Apache2 ....'

现在确保保存所有这些已更改的文件,并使用wampmanager菜单重新启动Apache.

首先测试未受保护的站点是否仍在工作.

然后尝试使用新的受保护站点,将"https://"添加到域名的前面https://www.wamphelpers.dev,当然没有单引号.

如果Apache没有重新启动,你可能会说错了.像这样测试配置: -

打开命令窗口

cd \wamp\bin\apache\apachex.y.z\bin
httpd -t
Run Code Online (Sandbox Code Playgroud)

这将解析所有配置文件,并应提供文件名和已找到错误的行号.

修复它,然后再试一次.

首次访问您的网站将生成类似这样的消息页面.这是使用FireFox,其他人会略有不同,但概念却一样.

在此输入图像描述

这是因为您的证书未由受信任的机构DONT PANIC签署,这应该发生.

点击"我理解风险",这将显示一个按钮,说"添加例外"按"添加例外"按钮,检查证书网站详细信息实际上是您的,除非您清除,否则您不会再看到此消息例外列表.

大注 从Apache v2.2.12和OpenSSL v0.9.8j开始,现在可以为每个Apache实例保护多个站点.本教程不涉及该过程.有关详细信息,请参见此处

这里

和这里

和这里

就像我在顶部所说的那样,现在你需要对SSL配置中的所有可用选项进行一些研究,并使事情按照你想要的方式工作,而不是使用默认值.

  • 这是迄今为止我一整天找到的最好的解释!对于任何想知道的人来说,这也适用于 Wamp64。 (2认同)

小智 5

必须在wampserver 2.5 中的httpd.conf文件中激活模块LoadModule socache_shmcb_module modules/mod_socache_shmcb.so.如果没有apache抛出下一条消息:

AH00526:C语言第75行的语法错误:/wamp/bin/apache/apache2.4.9/conf/extra/httpd-ssl.conf:SSLSessionCache:不支持'shmcb'会话缓存(已知名称:).也许你需要加载适当的socache模块(mod_socache_shmcb?).