我正在尝试从本地的Web服务器访问Active Directory。为此,我正在使用最新版本的xampp和名为adLDAP的PHP脚本。如果我理解正确,我需要启用SSL才能访问https URL。我试图在Google上搜索相关信息,但没有成功:( 有人可以提供教程链接或者向我解释如何在Windows 7 64位上为xampp / apache安装SSL吗?任何帮助都将不胜感激:)
我正在尝试从本地的Web服务器访问Active Directory。为此,我正在使用最新版本的xampp和名为adLDAP的PHP脚本。如果我理解正确,我需要启用SSL才能访问https URL。我试图在Google上搜索相关信息,但没有成功:( 有人可以提供教程链接或者向我解释如何在Windows 7 64位上为xampp / apache安装SSL吗?任何帮助都将不胜感激:)
Apache部分 - 可以让您打开https://localhost/xyz
有一个配置文件xampp/apache/conf/extra/httpd-ssl.conf,其中包含所有特定于ssl的配置。它有相当好的文档说明,所以请阅读注释并查看http://httpd.apache.org/docs/2.2/ssl/。
该文件以<IfModule ssl_module>
开头,因此仅在apache使用其mod_ssl模块启动时才会生效。
在编辑器中打开文件xampp/apache/conf/httpd.conf,并搜索以下行:
#LoadModule ssl_module modules/mod_ssl.so
去掉井号,保存文件并重新启动apache。现在,Web服务器应该使用xampp的基本/默认ssl配置开始;足够用于测试,但您可能想多了解一些关于apache文档中的mod_ssl。
PHP部分-使adldap能够使用ldap over ssl
adldap需要php的openssl扩展来使用“ldap over ssl”连接。openssl扩展随xampp一起提供。您必须“告诉”php加载此dll,例如在您的php.ini中有一个extension=nameofmodule.dll
运行
echo 'ini: ', get_cfg_var('cfg_file_path');
它应该向您显示PHP安装使用的ini文件(可能在php-apache模块和php-cli版本之间有所不同)。 打开此文件并搜索
;extension=php_openssl.dll
去掉分号,保存文件并重新启动Apache。
extension=php_openssl.dll
行实际上在XMAPP 1.7.4的php.ini
中缺失...但这是一个简单的修复。 - Courtney Christensen原来,在 XAMPP 1.7.2 的 PHP 5.3 中已经编译并启用了 OpenSSL,因此不再需要单独的扩展 DLL 文件。
但是,请务必在 PHP.ini 文件中启用该功能,添加以下行:extension=php_openssl.dll
我已经尝试了这里建议的大部分步骤,但仍然无法解决问题。尝试以下方法可以解决: 打开XAMPP控制面板,找到Apache模块的配置按钮。点击“配置”按钮,选择PHP(php.ini)。用任何文本编辑器打开并删除php_openssl前的分号。保存并重新启动Apache。问题应该就解决了!
(如果您不是超级用户,请在每个命令前使用sudo)openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
cp server.crt /opt/lampp/etc/ssl.crt/domainname.crt
cp server.key /opt/lampp/etc/ssl.key/domainname.key
通过编辑[XAMPP_HOME]/etc/extra/httpd-ssl.conf添加一个虚拟主机,例如"localhost.domainname.com",如下所示:LoadModule ssl_module modules/mod_ssl.so
<virtualhost 127.0.1.4:443>
ServerName localhost.domainname.com
ServerAlias localhost.domainname.com *.localhost.domainname.com
ServerAdmin admin@localhost
DocumentRoot "/opt/lampp/htdocs/"
DirectoryIndex index.php
ErrorLog /opt/lampp/logs/domainname.local.error.log
CustomLog /opt/lampp/logs/domainname.local.access.log combined
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /opt/lampp/etc/ssl.crt/domainname.crt
SSLCertificateKeyFile /opt/lampp/etc/ssl.key/domainname.key
<directory /opt/lampp/htdocs/>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</directory>
BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
</virtualhost>
将以下条目添加到 /etc/hosts 文件中:
127.0.1.4 localhost.domainname.com
现在,请尝试安装证书或将证书导入浏览器中。我已经检查过,在Ubuntu上可以正常工作。
运行 -> "C:\xampp\apache\makecert.bat"(在Windows上双击) 输入您选择的密码,对于除“localhost”之外的所有内容都按Enter键!在此处提问时要小心:
Common Name (e.g. server FQDN or YOUR name) []:localhost
(证书仅针对域名区域发布!)
XAMPP -> Apache -> Config -> httpd.conf(“C:\ xampp \ apache \ conf \ httpd.conf”)
LoadModule ssl_module modules / mod_ssl.so(删除行首的#)
XAMPP -> Apache -> Config -> php.ini(“C:\ xampp \ php \ php.ini”)
extension = php_openssl.dll(从行首删除;)
重新启动Apache和Chrome!
检查证书的任何问题或状态:
Chrome -> F12 -> Security -> View Certificate
我已经按照建议的步骤做了所有事情,但我的代码仍然无法工作,因为我正在使用curl
如果您在php文件中使用curl
,则curl似乎默认拒绝所有ssl流量。对我有效的快速修复方法是添加:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
调用之前:
curl_exec():
chrome://flags/#allow-insecure-localhost