关于apache 开启 ssl https 支持 TLS1.2 的些事

1,869 阅读2分钟

项目背景

需要搭建一个小程序的服务器,当然要使用https协议
服务器windows service 2012 r2,后台语言是php,服务集成环境装的是appserv2.5 ,apache2.2
证书申请阿里云的,https协议能正常打开,就是小程序请求不了,要求TLS1.2
网上的文章基本都是旧的,而且没有说明apache版本,基本不适合你,还是要折腾
最后找到文章说apache的httpd版本低不支持TLS1.0以上

于是下载了最新版的appserv集成环境,apache2.4
基本上不用折腾,开启下就完美

正文

事先有折腾配置了系统的TLS支持,一般都是注册表的东西,类似这样,但不知有没有起作用
blog.csdn.net/kirawoo/art…

httpd.conf中开启(默认应该是开启的)

1
LoadModule ssl_module modules/mod_ssl.so


httpd.conf 开启加载配置文件

注意,这里是:httpd-ahssl.conf ,不是httpd-ssl.conf,

到httpd-ahssl.conf里面配置

已经内置好几个虚拟目录,映射不同的域名到不同的目录

选一个来改就好,改下web目录和证书路径,比如:

<VirtualHost *:443> 
 SSLEngine on
  ServerName localhost:443
  SSLCertificateFile "${SRVROOT}/cert/2002590_service.ktfqs.com_public.crt"
  SSLCertificateKeyFile "${SRVROOT}/cert/2002590_service.ktfqs.com.key"
  SSLCertificateChainFile "${SRVROOT}/cert/2002590_service.ktfqs.com_chain.crt"
  DocumentRoot "C:/AppServ/www"
# DocumentRoot access handled globally in httpd.conf
    CustomLog "${SRVROOT}/logs/ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    <Directory "C:/AppServ/www">
        Options Indexes Includes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</virtualhost>

ServerName不用绑定域名也可以访问,既然能访问就不管它
注意,原配置中,只有一行key文件,一行公共crt,其中这行是额外加的:

SSLCertificateChainFile "${SRVROOT}/cert/2002590_service.ktfqs.com_chain.crt"

进行,否则 ,开发工具里可以请求,但真机上会报错request:fail ssl hand shake error

另外证书的类型要对号入坐,否则 httpd.exe启动不起来

SSLCertificateFile 应该是私有crt文件,下载后有带域名的
SSLCertificateChainFile 这个应该是公共的crt文件,文件名通用的,如腾讯的叫root_bundle.crt



重启,完美