Apache 安装 RSA/ECC 双证书模式简易教程 - V2EX
alect
V2EX    SSL

Apache 安装 RSA/ECC 双证书模式简易教程

  •  
  •   alect 2016-02-27 13:44:19 +08:00 5200 次点击
    这是一个创建于 3522 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前几天捣鼓 ECC 证书 /t/258912,简单看了下 Apache 运行双证书非常方便,说下自己的实现过程。

    OpenSSL 版本最好是 1.0.2 以上,如果是 1.0.1 也行,以下分两种情况说明。

    一般大家用的都是系统默认的 OpenSSL 版本仅为 1.0.1 (我用的 centos7 ,默认是 1.0.1 ),而更新 OpenSSL 并不建议,所以为了不影响系统其他软件,一般建议将 OpenSSL 1.0.2 安装到了非默认路径,然后编译 Apache 的时候指定新版 OpenSSL 。
    --------------------------------------------------------------------------------------------------------
    如果不想编译 OpenSSL ,仍旧使用 1.0.2 以前的版本,则用以下方法:
    首先将 ecc 证书和 rsa 证书的证书链合并, ecc 证书链在前, rsa 在后,
    cat chain-ecc.txt chain-rsa.txt > chain-ecc-rsa.txt

    将 ecc 证书(不含证书链)和 ecc 证书的密钥文件放在前,
    #ECC
    SSLCertificateFile /etc/apache2/SSL2015/ecdsa.cert.crt
    SSLCertificateKeyFile /etc/SSL2015/certs/ecdsa.key
    将 rsa 证书(不含证书链)和 rsa 证书的密钥文件放在后,
    #RSA
    SSLCertificateFile /etc/apache2/SSL2015/rsa.cert.crt
    SSLCertificateKeyFile /etc/apache2/SSL2015/rsa.cert.key

    #指定 ecc/rsa 合并后的证书链位置
    SSLcertificateChainFile /etc/apache2/SSL2015/chain-ecc-rsa.txt

    --------------------------------------------------------------------------------------------------------
    如果你的 OpenSSL 版本已经为 1.0.2 以及更新的版本,则用以下方法,ecc 和 rsa 证书要包含证书链:

    #ECC 指定 ecc 证书文件位置(证书以及证书链合并为一个文件为 ecdsa.cert.pem )
    SSLCertificateFile /etc/apache2/SSL2015/ecdsa.cert.pem
    SSLCertificateKeyFile /etc/SSL2015/certs/ecdsa.key

    #RSA 指定 rsa 证书文件位置(证书以及证书链合并为一个文件为 rsa.cert.pem )
    SSLCertificateFile /etc/apache2/SSL2015/rsa.cert.pem
    SSLCertificateKeyFile /etc/apache2/SSL2015/rsa.cert.key

    --------------------------------------------------------------------------------------------------------

    以上是指定证书的方式,各位根据 OpenSSL 的版本选择对应的方式,当然这还没完,下一步要直接指定证书加密方式,确保 ecc 的加密方式要在 rsa 模式的前面,否则 ecc 证书没法生效了。


    #为了安全起见,关闭 SSLv2/SSLv3,
    # Disable SSLv2/3
    SSLProtocol All -SSLv2 -SSLv3
    #启用加密方法首选项
    SSLHonorCipherOrder On
    # https://mozilla.github.io/server-side-tls/ssl-config-generator/
    # 各位可以根据这个网站选择对应的加密方式,但是要将 ECDHE-ECDSA-AES128-GCM-SHA256 这一条放在最前面,其他的你可以根据这个网站上提示自己生成。
    SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

    --------------------------------------------------------------------------------------------------------
    用 Windows 7 + Chrome 48 访问,显示的为 ECC 证书


    用 Windows XP + Chrome 48 访问,显示的为 RSA 证书


    访问 https://cryptoreport.websecurity.symantec.com/checker/views/certCheck.jsp 可以看到网站成功启用了双证书。
    第 1 条附言    2016-02-27 21:12:46 +08:00
    各位可以访问 https://sslanalyzer.comodoca.com/ 观察实际效果,
    Windows 7 和 Windows XP 下面访问获取到的证书分别为 ECC 和 RSA.
    第 2 条附言    2016-02-28 09:23:59 +08:00
    mail.google.com 也是双证书,可以用 https://cryptoreport.websecurity.symantec.com/checker/views/certCheck.jsp 检查得知,有朋友说握手会增加一倍,然而并没有……
    7 条回复    2016-03-17 13:01:46 +08:00
    Citrus
        1
    Citrus  
       2016-02-27 14:15:09 +08:00 via iPhone
    然后你的握手包就这么翻了一倍。。。
    alect
        2
    alect  
    OP
       2016-02-27 14:21:42 +08:00
    @Citrus openssl s_client -showcerts -connect abc.com:443 检测只看到发送了一个证书,并没有将两个证书都发过来,或者是我检测的方法不对?
    Citrus
        3
    Citrus  
       2016-02-28 13:10:29 +08:00
    @alect 我的错,想当然了。抓包看了一下似乎服务器会根据 Client Hello 里面的信息来判断应该发哪个证书,而不是一股脑的两个都发过来。
    DesignerSkyline
        4
    DesignerSkyline  
       2016-03-12 22:57:11 +08:00
    对于 Let's Encrypt 的用户,可以稍微再等几天。 ECC 证书链过几天就会上

    ECDSA Intermediates
    ETA: Before August 1, 2016

    Let ’ s Encrypt only signs end-entity certificates with RSA intermediates. We will add the ability to have end-entity certs signed by an ECDSA intermediate.
    DesignerSkyline
        5
    DesignerSkyline  
       2016-03-12 22:57:46 +08:00
    @DesignerSkyline 错了,是 intermediate
    lslqtz
        6
    lslqtz  
       2016-03-17 07:35:14 +08:00
    感觉没啥大用啊。。个人感觉单用 ECC 就好了。我的 Let's Encrypt 就是用的 ECC 证书。毫不在乎 xp 用户 233
    alect
        7
    alect  
    OP
       2016-03-17 13:01:46 +08:00
    @lslqtz 对于谷歌这种级别的网站,就算只有 1%的还在用 RSA 证书,也是很可观的。
    对于个人网站,真的是无所谓。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2616 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 06:49 PVG 14:49 LAX 23:49 JFK 02:49
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86