【SSL】【Apache】 使用向导配置 https/ssl

前言

  • Apache 2.4.39
  • phpStudy 8.1.1.2
  • tomcat 8.0 的项目

准备

  1. httpd.conf 配置文件中加载 Http 反向代理用到的模块

    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    
  2. 确保引入vhost文件。
    phpStudy 8.1.1.2 中,在 httpd.conf 配置文件中,有下面这段配置:

    # Virtual hosts
    Include conf/vhosts/*.conf
    
    • 该配置表示 conf/vhosts 目录下,以 .conf 后缀结尾的配置文件,会被apahce加载。
    • 如果没有该段配置,或者该段配置被注释掉,则添加上该段配置。

Apache 配置 Https 的好处

在 Tomcat 中启用 Https也可以的(参考这里)。

服务器上肯定是多个应用共用一台。多个应用共用一台服务器时,就会涉及到端口冲突。比如,你也想用443端口,我也想用443端口,怎么办呢?就需要 Apache 配置反向代理。

Apache 配置 Https 反向代理

(Apache 配置 Https 反向代理 和 Apache 配置 Http 反向代理是一样的)

  1. 将正式放在指定位置。
    将证书放在apache的安装目录/conf/ssl目录。比如:C:\phpstudy_pro\Extensions\Apache2.4.39\conf\ssl
  2. 将证书文件按照规律进行命名。
    私钥文件:域名.key。比如:weixin.xxx.com.key
    公钥文件:域名.crt。比如:weixin.xxx.com.crt
    证书链文件:域名chain.crt。比如:weixin.xxx.comchain.crt
  3. 创建网站。

【SSL】【Apache】 使用向导配置 https/ssl
【SSL】【Apache】 使用向导配置 https/ssl
【SSL】【Apache】 使用向导配置 https/ssl

  1. conf/vhosts 目录下找到虚拟主机(VirtualHost)配置文件 weixin.xxx.com_443.conf 。修改该配置文件为如下:
<VirtualHost *:443>
  # server name
  ServerName weixin.xxx.com:443
  
  # document root
  DocumentRoot "C:/phpstudy_pro/WWW/weixin.xxx.com"
  <Directory "C:/phpstudy_pro/WWW/weixin.xxx.com">
      Options FollowSymLinks ExecCGI
      AllowOverride All
      Order allow,deny
      Allow from all
      Require all granted
	  DirectoryIndex index.html
  </Directory>

  # SSL
  SSLEngine on
  SSLCertificateFile "${SRVROOT}/conf/ssl/weixin.xxx.com.crt"
  SSLCertificateKeyFile "${SRVROOT}/conf/ssl/weixin.xxx.com.key"
  SSLCertificateChainFile "${SRVROOT}/conf/ssl/weixin.xxx.comchain.crt"
    
  # log
  CustomLog "${SRVROOT}/logs/weixin.xxx.com_ssl.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

  ProxyRequests off
  ProxyPass /office ajp://localhost:9013/office
  ProxyPassReverse /office ajp://localhost:9013/office
  ProxyPass /officeapi http://localhost:9020/officeapi
  ProxyPassReverse /officeapi http://localhost:9020/officeapi
  
  # error
  ErrorDocument 400 /error/400.html
  ErrorDocument 403 /error/403.html
  ErrorDocument 404 /error/404.html
  ErrorDocument 500 /error/500.html
  ErrorDocument 501 /error/501.html
  ErrorDocument 502 /error/502.html
  ErrorDocument 503 /error/503.html
  ErrorDocument 504 /error/504.html
  ErrorDocument 505 /error/505.html
  ErrorDocument 506 /error/506.html
  ErrorDocument 507 /error/507.html
  ErrorDocument 510 /error/510.html
</virtualhost>

注:

  • ${SRVROOT} 为apache的安装目录。比如:C:\phpstudy_pro\Extensions\Apache2.4.39
  • apache 反向代理 tomcat 时,使用 ajp 协议优于 http 协议(参考 AJP 与HTTP 比较和分析)。
  • 当通过浏览器访问 https://weixin.xxx.com/office 时,Apache 将调用 http://localhost:9010/office 得到的结果返回给浏览器
  • 当通过浏览器访问 https://weixin.xxx.com/officeapi 时,Apache 将调用 http://localhost:9020/officeapi 得到的结果返回给浏览器
  • 当通过浏览器访问 https://weixin.xxx.com/images/default/head.jpg 时,Apache 将调用 C:/phpstudy_pro/WWW/test/images/default/head.jpg 返回给浏览器。如果 C:/phpstudy_pro/WWW/test/images/default/head.jpg 文件不存在,将会触发404错误,将 C:/phpstudy_pro/WWW/test/error/404.html 返回给浏览器。
  1. 重启apache。
  2. 测试一下。
    【SSL】【Apache】 使用向导配置 https/ssl
    【SSL】【Apache】 使用向导配置 https/ssl
  3. 检查证书按照是否完整
    访问这个网址进行检查:https://www.myssl.cn/tools/check-server-cert.html
    【SSL】【Apache】 使用向导配置 https/ssl
    检查结果:
    【SSL】【Apache】 使用向导配置 https/ssl

Apache 配置 Http 自动跳转 Https

  1. weixin.xxx.com.conf 配置文件中添加虚拟主机(VirtualHost)。
<VirtualHost *:80>
  # server name
  ServerName weixin.xxx.com
  
  # document root
  DocumentRoot "C:/phpstudy_pro/WWW/test"
  <Directory "C:/phpstudy_pro/WWW/test">
      Options FollowSymLinks ExecCGI
      AllowOverride All
      Order allow,deny
      Allow from all
      Require all granted
	  DirectoryIndex index.html
  </Directory>
    
  # log 
  # use default
  
  # error
  ErrorDocument 400 /error/400.html
  ErrorDocument 403 /error/403.html
  ErrorDocument 404 /error/404.html
  ErrorDocument 500 /error/500.html
  ErrorDocument 501 /error/501.html
  ErrorDocument 502 /error/502.html
  ErrorDocument 503 /error/503.html
  ErrorDocument 504 /error/504.html
  ErrorDocument 505 /error/505.html
  ErrorDocument 506 /error/506.html
  ErrorDocument 507 /error/507.html
  ErrorDocument 510 /error/510.html
  
  # http redirect to https
  RewriteEngine on 
  RewriteCond %{SERVER_PORT} !^443$ 
  RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
</VirtualHost>

参考

上一篇:js 递归优化——尝试为特定情况下的递归算法做次数减法


下一篇:微信小程序生成跳转体验版二维码