2014-10-07 258 views
15

我试图在本地主机上设置ssl,我认为是http://madurad.wordpress.com/2014/04/25/redirect-http-to-https-with-wamp-server/和其他很多人无法获得成功。我坚持httpd-ssl.conf的语法。我的Apache服务器趴下当我设置在wamp服务器上安装SSL:httpd-ssl.conf中的错误

<Directory "c:/wamp/www/"> 
    Options Indexes FollowSymLinks 
    AllowOverride all 
    Require all granted 
    SSLOptions +StdEnvVars 
</Directory> 

我已经尝试了许多其他类似

<Directory "c:/wamp/www/"> 
    SSLOptions +StdEnvVars 
</Directory> 

什么问题没能得到....

回答

63

如何配置WAMPServer到使用HTTPS SSL

*这不是一个微不足道的过程。希望本教程能够为您的SSL工作。 但是,一旦它正常工作,将其正确配置完全就可以了。

Additional reading for all who travel this road

好吧,

我已经基础上,建立一个网站叫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> 

增加其域名到C:\ WINDOWS \ system32 \ drivers \ etc \ hosts

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

127.0.0.1 wamphelpers.dev www.wamphelpers.dev 
::1  wamphelpers.dev www.wamphelpers.dev 

现在重新启动的dnscache从推出了采用 '以管理员身份运行'

net stop dnscache 
net start dnscache 

然后创造了\ WAMP \ WWW \ wamphelpers \一个简单的脚本的index.php

命令窗口如下
<?php 
    echo 'Hello, this is the WAMPHELPERS.DEV site homepage'; 
?> 

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

# Virtual hosts 
#Include conf/extra/httpd-vhosts.conf 

和删除像这样

# Virtual hosts 
Include conf/extra/httpd-vhosts.conf 

保存文件的#注释字符。

现在重新启动Apache,并确保您的简单的不安全的虚拟主机站点工作继续之前


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

但是:这些在我安装的任何Apache版本上都不适用。 我总是收到此错误消息。

error message

凡改变因Apache的版本文件夹中的序号我在。

如果你得到这个错误不要担心,这是你需要做什么。

安装最新版本的OpenSSL工具包

这可以得到from here

注:不要使用V1.1版本的是,PHP开发小组尚未编译PHP这些新的联系,所以坚持V1.0。?版本直到他们完成。

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

这将下载的可以运行安装此工具包的.exe文件。

它会问以下问题,我建议你回答像这样所以你不要最终安装的东西到C:\ Windows \ System32下。因为这是一个工具包,它经常变化很合理。最好保持这些东西独立,不要让它们成为全球系统。

openssl install suggestion

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


生成密钥和证书。

第1步:生成RSA私钥

首先,我们需要创建自己的证书。 正常(付费)过程是创建您的证书,然后将其传递给签名机构。 这就是为什么它需要花费金钱,因为他们必须这样做,以确保您是谁,并且您将使用该证书的网站是真实且合法的。

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

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

CD c:\apps\OpenSSL-Win32\bin 

做一个文件夹被放在输出(保持bin文件夹整齐),我用网站

md website 

现在,输入以下命令:

openssl genrsa -out website\server.key 2048 

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

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

在企业社会责任的一代,你会被提示输入多条信息。 这些是证书的X.509属性。 其中一个提示将用于“通用名称(例如服务器FQDN或您的名字)[]:”。 这个字段填入要被SSL保护的服务器的完全限定域名是很重要的。 因此,如果要保护的网站将是https://www.wamphelpers.dev,则在此提示下输入www.wampheplers.dev。我用wamphelper.dev作为我ServerNameServerName wamphelpers.dev

不要输入任何的问题:一个挑战密码[]:]请按ENTER键。 如果你在这里输入一个密码,当你来到与SSL配置Apache将无法启动启动Apache,并给此错误消息: -

[错误]初始化:SSLPassPhraseDialog内置不支持在Win32

基本上,如果您输入密码,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 []: [email protected] 

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) 

第3步:生成自签名证书

在这一点上,你需要生成一个自签名的证书,因为 您不打算让您的证书由CA签名,或者您希望在CA签署证书时测试 您的新SSL实施。

PRE - 警告 此证书将产生在客户端浏览器到 签名的证书颁发机构未知且不受信任的作用效果的误差。 这是不可避免的,因为我们自己签署证书,但当然信任网不知道我们是谁。 请参见本文档中的例子展示了如何告诉你的浏览器,你居然信任此证书

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/[email protected] 
Getting Private key 

第4步:安装私钥和证书

创建的版本下,这2个目录你正在使用的Apache。

md c:\wamp\bin\apache\apachex.y.z\conf\ssl.key 
md c:\wamp\bin\apache\apachex.y.z\conf\ssl.crt 

而且复制我们刚才生成的放进去,像这样的文件:

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 

步骤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 

删除通讯从这个线ENT '#' 也

Include conf/extra/httpd-ssl.conf 

然后移动该块之后线....像这样

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

# Secure (SSL/TLS) connections 
Include conf/extra/httpd-ssl.conf 

步骤6:配置PHP激活SSL

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

删除评论';'从该行

extension=php_openssl.dll 

第7步:配置您的安全站点的虚拟主机

烨为你的虚拟主机不仅如此塞耶斯,现在你无法避免的过程。

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

此文件是由Apache的释放,并包含了一些默认文件位置。 我们可以把最该文件,因为它是,但我们需要配置在这里的虚拟主机,以配合我们的实际点的位置和一些其他的东西,所以:

发现这些线路

DocumentRoot "c:/Apache2/htdocs" 
ServerName www.example.com:443 
ServerAdmin [email protected] 
ErrorLog "c:/Apache2/logs/error.log" 
TransferLog "c:/Apache2/logs/access.log" 

和改变他们

DocumentRoot "c:/wamp/www/wamphelpers" 
ServerName wamphelpers.dev:443 
ErrorLog "c:/wamp/logs/ssl_error.log" 
TransferLog "c:/wamp/logs/ssl_access.log" 

查找

SSLCertificateFile "c:/Apache2/conf/server.crt" 

和改变

SSLCertificateFile "c:/wamp/bin/apache/apachex.y.x/conf/ssl.crt/server.crt" 

查找

SSLCertificateKeyFile "c:/Apache2/conf/server.key" 

,并切换到

SSLCertificateKeyFile "c:/wamp/bin/apache/apachex.y.x/conf/ssl.key/server.key" 

查找

<Directory "c:/Apache2/cgi-bin"> 
    SSLOptions +StdEnvVars 
</Directory> 

,并切换到

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> 

的Apache 2.4语法

<Directory "c:/wamp/www/wamphelpers"> 
    SSLOptions +StdEnvVars 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Require local 
</Directory> 

查找

SSLSessionCache  "shmcb:c:/Apache2/logs/ssl_scache(512000)" 
SSLSessionCacheTimeout 300 

,并更改为

SSLSessionCache  "shmcb:c:/wamp/logs/ssl_scache(512000)" 
SSLSessionCacheTimeout 300 

查找

CustomLog "c:/Apache24/logs/ssl_request.log" \ 
     "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" 

,并切换到

CustomLog "c:/wamp/logs/ssl_request.log" \ 
      "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" 

通过conf文件并没有被注释掉任何命令基本上看,但有一个文件或文件夹 参考应改为引用WAMPServer文件夹结构,而不是“C:/ Apache2的....”

现在确保我们已经改变了所有的这些文件被保存,并使用wampmanager菜单重新启动Apache。

首先测试无保护的网站仍正常工作。

然后尝试使用新的受保护网站,方法是在域名 的前面添加“https://”,即https://www.wamphelpers.dev,当然没有单引号。

如果Apache没有重新启动你可能已经拼了什么。测试CONFIGS像这样: -

打开命令窗口

cd \wamp\bin\apache\apachex.y.z\bin 
httpd -t 

这将解析所有的配置文件,并应给你一个文件名和已发现的错误的行号。

修复它,然后重试。

第一次访问您的网站会产生一个类似这样的消息页面。 这是使用FireFox,别人会略有不同,但它的概念是一样的。

enter image description here

这是因为你的证书不是由受信任的机构签署的,不要惊慌,这是应该发生的。

点击“我了解风险”,并会告诉你一个按钮,说“添加例外” 按添加例外按钮,检查后,该证书的网站细节其实都是你的, ,你不会看到除非您清除例外列表,否则再次发送此消息。

BIG注意 例如Apache v2.2.12的和OpenSSL v0.9.8j现在能够确保每一个Apache实例多个站点。 本教程不包含该过程。 在这里看到更多的细节:

Here

and Here

and Here

就像我在上面说,现在你需要做的SSL中所有可用选项的一些研制配置和让事情工作,而不是使用默认值。

+0

此外,在不远的地方你添加虚拟开始你需要确保httpd.conf中包含“Include conf/extra/httpd-vhosts.conf”的行不被注释。该文件位于:C:\ wamp \ bin \ apache \ apache {version} \ conf – Spazmoe06 2015-06-02 03:29:16

+0

@ Spazmoe06谢谢您添加了一个不是那个 – RiggsFolly 2015-06-02 10:26:17

+1

这真的非常有帮助,谢谢你的努力。但我认为,CustomLog的“查找”部分存在问题“c:/wamp/logs/ssl_request.log”\ “%t%h%{SSL_PROTOCOL} x%{SSL_CIPHER} x \”%r \“%b” – Jobayer 2015-07-26 04:48:17

1

@RiggsFolly:与主要的自签名的证书可能例如在这里轻松地生成... http://www.selfsignedcertificate.com/,这样我就可以开始从第4步教程(我也有标准:80个虚拟服务器上运行)。

反正有些事情提到在默认安装WAMP(我猜它因版本变化)已经启用,但休息对我帮助很大。而实际上一两件事失踪......我也不得不取消注释以下行“的httpd.conf”

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so 
2

@RiggsFolly: 一些小错误/错字/添加在您的教程。下面是结合使用WAMPServer 2.5 64位(2.4.9的Apache和PHP 5.5.12)在Windows 7 SP1 64位:

-httpd-vhosts.conf位于额外/的httpd-vhosts.conf

- 当你尝试编辑你的主机文件时,一定要禁用任何virusscanner。其中一些阻止访问主机文件。

-be确保编辑您的主机文件,否则你试图挽救一个错误,当打开你的文本编辑以管理员身份。

- 不要忘记在主机行,如果任何

- 如果你使用WAMPServer 64位一定要下载的OpenSSL

-the一步的OpenSSL genrsa的64位版本的开头删除# - out website \ server.key 2048 创建server.key文件而不是privkey.pem!

-file \ wamp \ bin \ apache \ apachex.yz \ conf \ httpd-ssl.conf位于\ wamp \ bin \ apache \ apachex.yz \ conf \ extra \ httpd-ssl.conf(也许这个取决于WAMPServer版本)

- 我必须为http(80-> 8080)和https(443-> 444)使用不同的端口,因为我认为Skype使用这些端口。当你使用不同的端口时,一定要在本教程的任何地方看到80或443的地方

- 我也必须启用socache_shmcb_module。 “httpd -t”也提到了这一点。

5

有必要激活模块的LoadModule socache_shmcb_module模块/ mod_socache_shmcb.so在文件的httpd.conf在wampserver 2.5。如果没有阿帕奇抛出下一个消息:

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

1

如果有错误:

Cannot load modules/mod_ssl.so into server: The operating system cannot run %1

然后,你必须:

  1. 安装的Win32 OpenSSL的位置http://slproweb.com/products/Win32OpenSSL.html
  2. 复制/粘贴的libeay32.dll,ssleay32.dll到你的PHP WAMP bin文件夹(C:\ wamp64 \ bin \ php \ php5.6.19)
  3. 重新启动apache

注:测试WAMP服务器3

+0

我试过了,但是我没有在openssl目录下发现'libeay32.dll'或'ssleay32.dll' – natanelg97 2016-08-28 12:05:32

+4

我在C:\ OpenSSL-Win64里面找不到libeay32.dll或ssleay32.dll。但用c:\ wamp \ bin \ php \ php7.0.4中的文件副本替换c:\ wamp \ bin \ apache \ apache2.4.18 \ bin中的这两个符号链接。 – 2016-10-14 14:53:35

+1

@ Aydus-Matthew为我做的OMG,一直在敲我的头几天......几乎放弃了... TNX – Exlord 2017-01-11 10:59:24

1

上如果有错误是这样的:

Cannot load modules/mod_ssl.so into server: The specified module could not be found. 
  1. 你可能想尝试在你的WAMP文件夹搜索的libeay32.dll,你可能在{wamp文件夹}/bin/php/php {版本7}中找到它/

  2. 将libeay32.dll和ssleay32.dll复制并粘贴到{wamp文件夹}/bin/apache/apache {version 2.x }/bin/AND {wamp文件夹}/bin/php/php {verion 5.x}。确保你备份你正在放置的任何东西。

  3. 运行的httpd -t和测试语法

注:我相信这是由于在阿帕奇OpenSSL的一部分WAMP 3.0.6的错误。幸运的是,在php7文件夹中,这些dll与apache和php5兼容。

0

所有之前:

1).Shutdown WAMP并继续C:\wamp\scripts\config.inc.php移动从阵列libeay32.dllssleay32.dll,线133139

2).Install OpenSSL的官方网站,留意对您的OS版本x64或不。

命令提示符:

3)。 cd C:\wamp\bin\apache\apache2.4.23\bin

4)。 5)。 openssl rsa -in privkey.pem -out localhost.key

6)。 openssl x509 -in localhost.csr -out localhost.crt -req -signkey localhost.key -days 365 -sha256 -extfile v3.ext

更新:从Chrome 58我们将需要提供Subject Alternative Name。 这个名字我们可以从扩展文件v3.ext获得:

authorityKeyIdentifier=keyid,issuer 
basicConstraints=CA:FALSE 
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment 
subjectAltName = @alt_names 

[alt_names] 
DNS.1 = 127.0.0.1 
DNS.2 = localhost 

在通用名称非常重要插入 'localhost' 的

7).Grab localhost.key和localhost.crt并把它们C:\wamp\bin\apache\apache2.4.23\conf\key(肯定之前,创建相应的目录)

配置:

8).enable在C:\wamp\bin\apache\apache2.4.23\bin\php.ini

C:\wamp\bin\php\php5.6.25\php.iniextension=php_openssl.dll

9).proceed到C:\wamp\bin\apache\apache2.4.23\conf\httpd.conf并取消:

LoadModule ssl_module modules/mod_ssl.so

Include conf/extra/httpd-ssl.conf

Include conf/extra/httpd-vhosts.conf

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so 

10)。继续C:\wamp\bin\apache\apache2.4.23\conf\extra\httpd-ssl.conf

,并进行更改:

SSLSessionCache "shmcb:c:/wamp/bin/apache/apache2.4.23/logs/ssl_scache(512000)"

SSLSessionCacheTimeout 300

VirtualHost _default_:443

DocumentRoot "c:/wamp/www/"

ServerName localhost:443

ErrorLog "c:/wamp/bin/apache/apache2.4.23/logs/ssl_error.log" 

,(如果不存在创建文件)

TransferLog "c:/wamp/bin/apache/apache2.4.23/logs/access.log"

SSLCertificateFile "c:/wamp/bin/apache/apache2.4.23/conf/key/localhost.crt"

SSLCertificateKeyFile "c:/wamp/bin/apache/apache2.4.23/conf/key/localhost.key"

<Directory "c:/wamp/www/"> 
    SSLOptions +StdEnvVars 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Require local 
</Directory> 

CustomLog "c:/wamp/bin/apache/apache2.4.23/logs/ssl_request.log" 

证书处理:

11)。按运+ R和插入 'certmgr.msc',进口servercert.crt成 '受信任的根认证产品的机构'

12)。在命令提示符下检查你的服务器'httpd -t'应该是'Syntax OK'

13)。启动WAMP并进行链接https://localhost

我希望这将有助于

注:请阅读这篇文章有关Mozilla的行为:

https://blog.mozilla.org/security/2014/09/23/phasing-out-certificates-with-sha-1-based-signature-algorithms/