在本地 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/。 文件以&lt;IfModule ssl_module&gt; 开头,因此只有在 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

XAMPP Apache 服务器无法在内部网络上运行

无法在 MacOS-Sierra 上启动 XAMPP Apache 服务器

XAMPP Apache 站点根相关链接在本地工作,通过 LAN 上的远程计算机访问开发站点时失败

无法登录到 xampp 中的 mysql 服务器

xampp apache无法启动