美文网首页
https配置

https配置

作者: huangxiongbiao | 来源:发表于2017-05-11 07:58 被阅读82次

    https://common-buy.aliyun.com/?commodityCode=cas#/buy
    阿里云申请https证书。证书的域名保证一致

    申请好证书,导入Tomcat内
    服务端在Tomcat的server.xml内配置证书密码和路径。

    安装证书
    Tomcat支持JKS格式证书,从Tomcat7开始也支持PFX格式证书,两种证书格式任选其一。
    文件说明:
    1. 证书文件214092479090051.pem,包含两段内容,请不要删除任何一段内容。
    2. 如果是证书系统创建的CSR,还包含:证书私钥文件214092479090051.key、PFX格式证书文件214092479090051.pfx、PFX格式证书密码文件pfx-password.txt。
    1、证书格式转换
    在Tomcat的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,附件中只包含214092479090051.pem文件,还需要将私钥文件拷贝到cert目录,命名为214092479090051.key;如果是系统创建的CSR,请直接到第2步。
    到cert目录下执行如下命令完成PFX格式转换命令,此处要设置PFX证书密码,请牢记:
    openssl pkcs12 -export -out 214092479090051.pfx -inkey 214092479090051.key -in 214092479090051.pem
    2、PFX证书安装
    找到安装Tomcat目录下该文件server.xml,一般默认路径都是在 conf 文件夹中。找到 <Connection port="8443" 标签,增加如下属性:
    keystoreFile="cert/214092479090051.pfx"
    keystoreType="PKCS12"
    #此处的证书密码,请参考附件中的密码文件或在第1步中设置的密码
    keystorePass="证书密码"
                        
    完整的配置如下,其中port属性根据实际情况修改:
    <Connector port="8443"
        protocol="HTTP/1.1"
        SSLEnabled="true"
        scheme="https"
        secure="true"
        keystoreFile="cert/214092479090051.pfx"
        keystoreType="PKCS12"
        keystorePass="证书密码"
        clientAuth="false"
        ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
        SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
        SSLCipherSuite="ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4"/>
    3、JKS证书安装(帮助)
    ( 1 ) 使用java jdk将PFX格式证书转换为JKS格式证书(windows环境注意在%JAVA_HOME%/jdk/bin目录下执行)
    keytool -importkeystore -srckeystore 214092479090051.pfx -destkeystore your-name.jks -srcstoretype PKCS12 -deststoretype JKS
    回车后输入JKS证书密码和PFX证书密码,强烈推荐将JKS密码与PFX证书密码相同,否则可能会导致Tomcat启动失败。
    ( 2 ) 找到安装 Tomcat 目录下该文件Server.xml,一般默认路径都是在 conf 文件夹中。找到 <Connection port="8443" 标签,增加如下属性:
    keystoreFile="cert/your-name.jks"
    keystorePass="证书密码"
    完整的配置如下,其中port属性根据实际情况修改:
    <Connector port="8443"
        protocol="HTTP/1.1"
        SSLEnabled="true"
        scheme="https"
        secure="true"
        keystoreFile="cert/your-name.jks"
        keystorePass="证书密码"
        clientAuth="false"
        ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
        SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
        SSLCipherSuite="ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4"/>
    ( 注意:不要直接拷贝所有配置,只需添加 keystoreFile,keystorePass等参数即可,其它参数请根据自己的实际情况修改 )
    4、 重启 Tomcat。
    5、 通过 https 方式访问您的站点,测试站点证书的安装配置,如遇到证书不信任问题,请查看相关文档。
    
    

    客户端将公钥文件转成自己需要的格式,例如iOS 我用的pem转成的cer文件,然后请求的时候配置下

    + (AFSecurityPolicy*)customSecurityPolicy
    {
        // /先导入证书
        NSString *cerPath = [[NSBundle mainBundle] pathForResource:certificate ofType:@"cer"];//证书的路径
        NSData *certData = [NSData dataWithContentsOfFile:cerPath];
        
        // AFSSLPinningModeCertificate 使用证书验证模式
        AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
    //    AFSSLPinningModeNone、AFSSLPinningModeCertificate
        // allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO
        // 如果是需要验证自建证书,需要设置为YES
        securityPolicy.allowInvalidCertificates = YES;
        
        //validatesDomainName 是否需要验证域名,默认为YES;
        //假如证书的域名与你请求的域名不一致,需把该项设置为NO;如设成NO的话,即服务器使用其他可信任机构颁发的证书,也可以建立连接,这个非常危险,建议打开。
        //置为NO,主要用于这种情况:客户端请求的是子域名,而证书上的是另外一个域名。因为SSL证书上的域名是独立的,假如证书上注册的域名是www.google.com,那么mail.google.com是无法验证通过的;当然,有钱可以注册通配符的域名*.google.com,但这个还是比较贵的。
        //如置为NO,建议自己添加对应域名的校验逻辑。
        securityPolicy.validatesDomainName = NO;
        
        securityPolicy.pinnedCertificates = [[NSSet alloc] initWithObjects:certData,nil];
        return securityPolicy;
    }
    
    

    微信小程序的url不能带端口必须是https配好后,利用Nginx转发实现无端口请求。

    相关文章

      网友评论

          本文标题:https配置

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