分类 ssl 下的文章

部署通配符ssl免费证书后第一次打开很慢,找了两天,是我不能解决的。

直接上文章链接,根据我浏览顺序:

Initial Connection & SSL Negotiation Time》发现国外ssl验证真快只有几十毫秒
关于请求被挂起页面加载缓慢问题的追查》这是浏览过,技术文档写得最详细的,有水平,值得一看。
谷歌浏览器network请求时间(stalled,DNS Lookup,Waiting)分析以及解决方案》简单明了
提高https载入速度,记一次nginx升级优化》同样踩坑,给出调试方案
为什么 HTTPS 需要 7 次握手以及 9 倍时延》知识扩展。
部署 Let's Encrypt 的站点国内首次打开很慢?那是因为 OSCP 域名被墙了》一群人的吐槽。

IIS默认的是SSL 2.0协议,使用了RC4加密密钥的,这样会造成PCI DSS和Apple ATS规范不及格。

我们需要禁用SSL v2.0、SSL v3.0协议和低强度加密密钥。使用TLS1.0 TLS1.1 TLS1.2版本。

这里如果要改的话,要去注册表改,很麻烦的。我找到了IIS Crypto GUI这个软件很方便就能修改。

请输入图片描述

直接点“Best Practices”,推荐设置,然后点“Apply”应用即可,要重启一下系统。

软件下载地址:https://www.nartac.com/Products/IISCrypto/Download

点那个“IIS Crypto GUI”,下载,Windows还是用GUI版本吧。。

在上面如果取消TLS1.0勾选,会提示远程桌面使用该协议,需要一个安装一个补丁,有点麻烦。

我们兼容办法是这里先勾选上TLS1.0应用,重启后在到注册请去修改禁用TLS1.0协议,具体参照禁用不安全的SSL2.0和SSL3.0协议操作方式一样

相关链接:
Windows Server IIS配置 怎么禁用不安全的SSL2.0和SSL3.0协议? https://www.gworg.com/problems/548.html
IIS上部署多个SSL证书绑定https和使用TLS1.0 TLS1.1 TLS1.2协议:https://www.iamwawa.cn/blog/4-iis-ssl.html

如果https与http绑定在不同的IIS站点上,直接在https站点的web.config中添加如下配置:

<system.webServer>
    <httpProtocol>
        <customHeaders>
            <add name="Strict-Transport-Security" value="max-age=31536000" />
        </customHeaders>
    </httpProtocol>
</system.webServer>

如果在同一个IIS站点,需要针对https响应添加如下的url重写规则(详见How to enable HTTP Strict Transport Security (HSTS) in IIS7+):

<system.webServer>
    <rewrite>
        <outboundRules>
            <rule name="Add Strict-Transport-Security when HTTPS" enabled="true">
                <match serverVariable="RESPONSE_Strict_Transport_Security"
                    pattern=".*" />
                <conditions>
                    <add input="{HTTPS}" pattern="on" ignoreCase="true" />
                </conditions>
                <action type="Rewrite" value="max-age=31536000" />
            </rule>
        </outboundRules>
    </rewrite>
</system.webServer>

相关文章:
https://q.cnblogs.com/q/85129/
https://serverfault.com/questions/417173/enable-http-strict-transport-security-hsts-in-iis-7

在我windows + apache2.4.38 上尝试了网上很多方法无效,最后找到一个答案就是:

apache SSL支持协议是全局设置,需要放在VirtualHost外面。

开启ocsp需要保持格式在命令上一行注释,否则可能会报错。不要问为什么,完全靠试出来的。

我的VirtualHost配置记录:


Listen 443

# 添加 SSL 协议支持协议,去掉不安全的协议
SSLProtocol All -TLSv1

#开启ocsp
SSLUseStapling on   
SSLCompression off 
#缓存位置  需要mod_socache_shmcb模块
SSLStaplingCache "shmcb:logs/stapling-cache(150000)" 
#ocsp装订正常缓存超时3600秒
SSLStaplingStandardCacheTimeout 3600    
#ocsp装订错误缓存超时600秒
SSLStaplingErrorCacheTimeout 600    

<VirtualHost *:443>
DocumentRoot "D:/blog"
ServerName blog.gamecf.cn
# SSL功能打开,如果在Virtualhost 出现这句,则仅作用于虚拟机站点配置范围,这个虚拟机站点全部使用SSL通信,如果出现在Virtualhost外,则作用于全局,整个服务器都使用 SSL(HTTPS)通信,不能采用HTTP通信,所以通常都在Virtualhost中加这句。
SSLEngine on
# 修改加密套件
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
# 证书公钥配置
SSLCertificateFile D:/gamecf.cn.crt
# 证书私钥配置
SSLCertificateKeyFile D:/gamecf.cn.key
# 开启HTTP/2.0
Protocols h2 http/1.1
# 支持HTTP严格传输安全(HSTS)
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
# 支持HPKP
Header set Public-Key-Pins "pin-sha256=\"klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY=\"; pin-sha256=\"633lt352PKRXbOwf4xSEa1M517scpD3l5f79xMD9r9Q=\"; max-age=2592000; includeSubDomains"
<Directory "/">
    Require all granted 
    AllowOverride All
    Options Indexes FollowSymLinks ExecCGI
    Require host ip
</Directory>
</VirtualHost>

相关文章:
https://codeday.me/bug/20181107/358027.html

FreeSSL.cn 是一个免费提供 HTTPS 证书申请、HTTPS 证书管理和 HTTPS 证书到期提醒服务的网站,旨在推进 HTTPS 证书的普及与应用,简化证书申请的流程。

支持 Let's Encrypt V2 乏域名证书。

需要下载windows客户端软件KeyManager。

KeyManager,可以提供安全便捷的 SSL 证书申请和管理。