在本地xampp / apache服务器上设置SSL

时间:2010-04-15 07:39:40

标签: php apache ssl https xampp

我正在尝试从我的本地网络服务器访问Active Directory。为此,我使用的是最新版本的xampp和一个名为adLDAP的PHP脚本。如果我理解正确,我需要启用SSL才能访问https网址。我试图谷歌它,但没有运气:(任何人都可以链接教程或向我解释如何在xampp / apache上为Windows 7 64位安装SSL?任何帮助将不胜感激:)

6 个答案:

答案 0 :(得分:28)

Apache部分 - 允许您打开https://localhost/xyz

配置文件xampp / apache / conf / extra / httpd-ssl.conf包含所有特定于ssl的配置。它有相当好的文档记录,所以请阅读评论并查看http://httpd.apache.org/docs/2.2/ssl/。 文件以<IfModule ssl_module>开头,因此只有在使用mod_ssl模块启动apache时才会生效。

在编辑器中打开文件xampp / apache / conf / httpd.conf并搜索该行

#LoadModule ssl_module modules/mod_ssl.so

删除hashmark,保存文件并重新启动apache。网络服务器现在应该从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-module和php-cli版本可能不同)。
在编辑器中打开此文件并搜索

;extension=php_openssl.dll

删除分号,保存文件并重新启动apache。

另见:http://docs.php.net/install.windows.extensions

答案 1 :(得分:6)

事实证明,OpenSSL是在XAMPP 1.7.2的php 5.3中编译和启用的,因此不再需要单独的扩展dll。

但是,您仍然需要在PHP.ini文件中启用行extension=php_openssl.dll

答案 2 :(得分:4)

我在这里做了大部分建议的事情,但仍然没有奏效。试过这个并且它有效: 打开 XAMPP控制面板,找到 Apache模块配置按钮。单击“配置”按钮,然后选择 PHP(php.ini)。使用任何文本编辑器打开并删除 php_openssl 之前的半列。保存并重启Apache。那应该做!

答案 3 :(得分: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。

答案 4 :(得分:1)

我已经浏览了互联网上的所有答案和教程,但这里是基本步骤启用 SSL( https )on localhost XAMPP

必需:

  1. 运行 - &gt; &#34; C:\ XAMPP \阿帕奇\ makecert.bat&#34; (双击窗口) 填写你选择的passowords,按Enter输入所有内容但是定义&#34; localhost&#34; !!!在这里被问到时要小心:

    通用名称(例如服务器FQDN或您的名字)[]: localhost

    (证书仅按域名区域发布!)

  2. 重启apache
  3. Chrome - &gt;设置 - &gt;搜索&#34;证书&#34; - &GT;管理证书 - &gt;受信任的根证书颁发机构 - &gt;导入 - &gt; &#34; C:\ XAMPP \阿帕奇\ CONF \ ssl.crt \ server.crt这&#34; - &GT;必须要问&#34;是&#34;确认!
  4. https://localhost/testssl.php - &gt; [OK,Now Green!](任何html测试文件)
  5. 可选:(如果以上不起作用,请执行更多这些步骤)

    1. 以管理员身份运行XAMPP(开始 - &gt; XAMPP - &gt;右击 - &gt;以管理员身份运行)
    2. XAMPP - &gt; Apache - &gt;配置 - &gt; httpd.conf(&#34; C:\ xampp \ apache \ conf \ httpd.conf&#34;)

      LoadModule ssl_module modules / mod_ssl.so(删除#形成行的开头)

    3. XAMPP - &gt; Apache - &gt;配置 - &gt; php.ini(&#34; C:\ xampp \ php \ php.ini&#34;)

      extension = php_openssl.dll(删除;从行首开始)

    4. 重启apache和chrome!

    5.   

      检查任何问题或证书的状态:

           

      Chrome - &gt; F12 - &gt;安全 - &gt;查看证书

答案 5 :(得分:0)

我在这里完成了所有建议的内容,但我的代码仍无效,因为我使用curl

如果你在php文件中使用curl,curl似乎默认拒绝所有ssl流量。一个对我有用的快速修复是添加:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

致电之前:

 curl_exec():

在php文件中。

我认为这会禁用SSL证书的所有验证。