美文网首页
windows系统下,基于Apache的SSL配置

windows系统下,基于Apache的SSL配置

作者: 公输昊少 | 来源:发表于2020-12-22 16:46 被阅读0次

    系统环境及前置条件

    windows server 2012 R2 + Wampserver64
    公网IP,开放80端口
    要配置证书的域名解析指向本服务器的公网IP
    在Apache中完成VirtualHost的配置,保证能够通过域名正确访问到我们的Web服务。

    申请证书

    我主要是按照下面链接中的教程来申请免费证书:
    https://certbot.eff.org/lets-encrypt/windows-apache
    教程中的1-3可以看一下,然后根据“4.Installation instructions (default)”来安装cerbot。安装完成后,以管理员方式运行该软件,会为我们打开命令行窗口,然后按照指引来申请证书即可。
    如果我们在申请证书的过程中需要保持服务运行,那么采用如下命令:

    certbot certonly --webroot
    

    (未测试)如果申请过程中不需要保持服务运行,可以采用如下命令:

    certbot certonly --standlone
    

    然后根据提示输入响应的信息即可。

    • 首先会提示输入域名,输入后回车;
    • 提示输入项目的根目录(webroot),这里我们输入VirtualHost中的DocumentRoot即可

    接下来可能会提示输入其他信息,根据实际情况输入即可。所有信息输入完成后,看到如下信息,则说明我们申请完成。以下信息中给出了证书文件的存放路径,我们可以记下来

    Congratulations! Your certificate and chain have been saved at:
    C:\Certbot\live\your.domain\fullchain.pem
    Your key file has been saved at:
    C:\Certbot\live\your.domain\privkey.pem

    注:这里给的路径指向的是一个快捷方式,我们可以从快捷方式的属性中看到证书文件的真实路径。

    配置SSL

    这里需要我们修改Apache的配置文件了,需要注意的是,我们在修改完配置文件后,一定要检查一下我们修改后的配置文件语法是否合法,否则Apache无法正常启动。如果Apache的bin文件夹已经加入了环境变了,那么我们直接在命令行输入如下命令即可:

    httpd.exe -t
    

    如果语法正确,会提示Syntax OK,否则会给出错误信息,我们根据提示的信息修改即可。
    如果如果上述命令无法正确执行,可能是Apache的bin文件夹没有加入环境变量,我们在命令行进入该文件夹,然后再运行该命令,或者直接采用绝对路径运行该命令即可。

    修改Apache配置以激活SSL

    这部分主要参考了stackoverflow上Installation SSL in wamp server: Error in httpd-ssl.conf这一问题目前投票最高的答案“How to Configure WAMPServer to use HTTPS SSL”的“Step 5: Configure Apache to activate 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
    

    另外就是要取消以下代码的注释:

    Include conf/extra/httpd-ssl.conf
    

    其中conf/extra/httpd-ssl.conf就是我们配置SSL的文件。
    我们还需要将上面的这行代码移动一下,移动后结果如下:

    <IfModule ssl_module>
    SSLRandomSeed startup builtin
    SSLRandomSeed connect builtin
    </IfModule>
    
    # Secure (SSL/TLS) connections
    Include conf/extra/httpd-ssl.conf
    

    在这里,我没有直接采用该配置文件,而是新建了一个配置文件,命名为httpd-ssl_mydomain.conf,因而我的配置文件就改成了:

    <IfModule ssl_module>
    SSLRandomSeed startup builtin
    SSLRandomSeed connect builtin
    </IfModule>
    
    # Secure (SSL/TLS) connections
    Include conf/extra/httpd-ssl_mydomain.conf
    

    改完配置后,测试一下,看看有没有语法错误,没问题的话,进行接下来的操作。

    配置SSL

    我们打开httpd-ssl_mydomain.conf文件,填入如下信息:

    Listen 443
    
    SSLPassPhraseDialog  builtin
    
    SSLSessionCache        "shmcb:C:/path/to/webroot/logs/ssl_scache(512000)"
    SSLSessionCacheTimeout  300
    
    <VirtualHost *:443>
        ServerAdmin hongsuwang@fas.harvard.edu
        DocumentRoot "C:/path/to/webroot"
        ServerAlias your.domain(这里就是填上域名)
        ErrorLog "C:/path/to/webroot/logs/error.log"
        CustomLog "C:/path/to/webroot/logs/access.log" combined
    
        #SSL
        SSLEngine On
        SSLCertificateFile C:/Certbot/live/your.domain/fullchain.pem
        SSLCertificateKeyFile C:/Certbot/live/your.domain/privkey.pem
        SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
        SSLProtocol All -SSLv2 -SSLv3
        SSLHonorCipherOrder On
    
        #PHP
        # Include conf/php/54.conf
    
        #PATH
        <Directory "C:/path/to/webroot">
        Options FollowSymLinks ExecCGI
        AllowOverride All
        Require all granted
        DirectoryIndex index.php default.php index.html index.htm default.html default.htm  
        </Directory>
        
    </VirtualHost>                                
    

    修改完,测试语法,没问题的话就可以重启Apache了,重启之后应该就可以通过https访问Web服务了。
    配置文件中的443是https的默认端口,但是我们的服务器好像有限制,通过该端口无法正常访问,我们改成81端口就没问题了,只是需要在域名后面加上端口号。

    相关文章

      网友评论

          本文标题:windows系统下,基于Apache的SSL配置

          本文链接:https://www.haomeiwen.com/subject/advsnktx.html