在本地 xampp/apache 服务器上设置 SSL
Posted
技术标签:
【中文标题】在本地 xampp/apache 服务器上设置 SSL【英文标题】:Setting up SSL on a local xampp/apache server 【发布时间】:2011-02-08 06:21:04 【问题描述】:我正在尝试从本地网络服务器访问 Active Directory。为此,我使用了最新版本的 xampp 和一个名为 adLDAP 的 php 脚本。如果我理解正确,我需要启用 SSL 来访问 https URL。我试过用谷歌搜索它,但没有运气:(谁能链接教程或向我解释如何在 xampp/apache for windows 7 64bit 上安装 SSL?任何帮助将不胜感激:)
【问题讨论】:
当我导航到 \adLDAP\examples\authenticate.php 时,此文件会将我重定向到 https:// 网址。 Firefox 显示禁止访问!错误 403,因为我没有启用 SSL。 【参考方案1】:我已经浏览了互联网上的所有答案和教程,但这里是在本地主机上启用 SSL (https) 的基本步骤使用 XAMPP:
必填:
运行 -> "C:\xampp\apache\makecert.bat" (双击windows) 填写您选择的密码,按 Enter 输入所有内容,但定义“localhost”!!!在这里被问到时要小心:
通用名(例如服务器 FQDN 或您的姓名)[]:localhost
(证书仅针对每个域名区域颁发!)
重启apache Chrome -> 设置 -> 搜索“证书” -> 管理证书 -> 受信任的根证书颁发机构 -> 导入 -> “C:\xampp\apache\conf\ssl.crt\server.crt” -> 必须询问“是”确认! https://localhost/testssl.php -> [好的,现在是绿色的!](任何 html 测试文件)可选:(如果上述方法不起作用,请执行更多这些步骤)
-
以管理员身份运行 XAMPP(开始 -> XAMPP -> 右键单击 -> 以管理员身份运行)
XAMPP -> Apache -> 配置 -> httpd.conf ("C:\xampp\apache\conf\httpd.conf")
LoadModule ssl_module modules/mod_ssl.so(从行首删除#)
XAMPP -> Apache -> 配置 -> php.ini ("C:\xampp\php\php.ini")
extension=php_openssl.dll(从行首删除 ;)
重启 apache 和 chrome!
检查任何问题或证书状态:
Chrome -> F12 -> 安全 -> 查看证书
【讨论】:
【参考方案2】:您可以通过创建自签名证书然后安装这些证书来在 XAMPP 上启用 SSL。键入以下命令以生成证书并将其移动到 ssl 文件夹。
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
(如果您不是超级用户,请在每个命令中使用 sudo)
现在,检查 [XAMPP_HOME]/etc/httpd.conf 中是否启用了 mod_ssl:
LoadModule ssl_module modules/mod_ssl.so
通过编辑 [XAMPP_HOME]/etc/extra/httpd-ssl.conf 添加一个虚拟主机,在本例中为“localhost.domainname.com”,如下所示:
<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 上有效。
【讨论】:
【参考方案3】:我在这里做了大部分建议的东西,但仍然没有工作。试过这个,它工作: 打开您的XAMPP 控制面板,找到Apache 模块 的Config 按钮。单击配置按钮并选择 PHP (php.ini)。使用任何文本编辑器打开并删除 php_openssl 之前的半列。保存并重新启动 Apache。应该这样做!
【讨论】:
【参考方案4】:事实证明,OpenSSL 是在 XAMPP 1.7.2 的 php 5.3 中编译和启用的,因此不再需要单独的扩展 dll。
但是,您仍然需要在 PHP.ini 文件中的 extension=php_openssl.dll
行中启用它
【讨论】:
【参考方案5】:我在这里做了所有建议的事情,但我的代码仍然无法正常工作,因为我使用的是curl
如果您在 php 文件中使用 curl
,curl 似乎默认拒绝所有 ssl 流量。一个对我有用的快速修复是添加:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
调用前:
curl_exec():
在 php 文件中。
我相信这会禁用 SSL 证书的所有验证。
【讨论】:
... 并且通过禁用证书验证,您为潜在的 MITM 攻击敞开大门,否则 SSL/TLS 旨在防止这些攻击。不要这样做! 是的。我应该在答案中引起更多关注。仅当您没有处理任何重要的事情时才这样做。我在 localhost 上使用它来访问我个人编写的网站。【参考方案6】:Apache 部分 - 使您能够打开 https://localhost/xyz
配置文件 xampp/apache/conf/extra/httpd-ssl.conf 包含所有 ssl 特定配置。它有很好的文档记录,因此请阅读 cmets 并查看 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。网络服务器现在应该从 xampp 的基本/默认 ssl 配置开始;足以进行测试,但您可能想在 apache 文档中阅读更多关于 mod_ssl 的信息。
PHP 部分 - 使 adldap 能够使用 ldap over ssl
adldap 需要 php 的 openssl 扩展来使用“ldap over ssl”连接。 openssl 扩展作为带有 xampp 的 dll 提供。您必须“告诉” php 加载此 dll,例如通过在您的 php.ini 中添加 extension=nameofmodule.dll
运行
echo 'ini: ', get_cfg_var('cfg_file_path');
它应该显示你的 php 安装使用了哪个 ini 文件(php-apache-module 和 php-cli 版本可能不同)。 在编辑器中打开此文件并搜索
;extension=php_openssl.dll
删除分号,保存文件并重新启动apache。
另见:http://docs.php.net/install.windows.extensions
【讨论】:
echo 行给出了这个答案:C:\xampp\php\php.ini 但此文件中没有 ;extension=php_openssl.dll。我也检查了 \php\ext 文件夹,没有 php_openssl.dll :\ 您使用哪个版本的 xampp? ok,那么 php_openssl 已经启用。看看修改后答案的第一部分。 在 xampp/apache/bin 中有一个 openssl.exe。在*** 或serverfault.com @VolkerK,谢谢,这篇文章很有帮助。对于未来的搜索者,XMAPP 1.7.4 上的php.ini
实际上缺少 extension=php_openssl.dll
行......但这是一个简单的修复。以上是关于在本地 xampp/apache 服务器上设置 SSL的主要内容,如果未能解决你的问题,请参考以下文章
在 xampp Apache Ubuntu 上设置 Certbot
无法在 MacOS-Sierra 上启动 XAMPP Apache 服务器