zoukankan      html  css  js  c++  java
  • 多域名证书的签名和自签名流程

    最近项目需要支持多域名的证书, 研究了一下再次做下总结, 以便以后查阅。

    开发前准备: Linux 环境下 使用openssl 制作, 没有安装openssl 的可以在网上搜索下安装。

    1:使用 openssl 生成私钥文件 server.key

     openssl genrsa -out server.key 2048

    2:因为证书需要支持多个域名,所以需要修改 openssl.cnf 文件

    将 openssl.cnf 拷贝到当前目录下

    cp/etc/ssl/openssl.cnf ./

    修改拷贝过来的配置文件

    1>  在 [ req ] 模块下 取消注释:req_extensions = v3_req # The extensions to add to a certificate request
    2>  确保[ req_distinguished_name ]下没有 0.xxx 的标签,有的话把0.xxx的0. 去掉
    3>  在 [ v3_req ] 块下增加一行 subjectAltName = @SubjectAlternativeName
    4>  在文件末尾增加如下信息:
    [SubjectAlternativeName]
    DNS.1 = service.xxx.cn
    DNS.2 = xxx.xxx.azurenet.cn
    DNS.3 = yyyy.xxx.azurenet.cn
    DNS.6 = *.service.azurenet.cn

    3:使用私钥和配置文件生成证书请求CSR文件server.csr,没有修改配置文件的不用写配置文件的参数 

    openssl req -new -key server.key -out server.csr -config ./openssl.cnf
    3.1> 生成CSR文件需要填写一些信息,Common Name填写主要域名,这个域名要在DNS.XX里
        Country Name (2 letter code) [AU]:CN             
        State or Province Name (full name) [Some-State]:Beijin 
        Locality Name (eg, city) []:Beijin
        Organization Name (eg, company) [Internet Widgits Pty Ltd]:vianet
        Organizational Unit Name (eg, section) []:vianet
        Common Name (e.g. server FQDN or YOUR name) []:service.azurenet.cn
        Email Address []:yue.li3@21vianet.com
    
        Please enter the following 'extra' attributes
        to be sent with your certificate request
        A challenge password []:y4#nTO8OSkRBh*mJ2PV1
        An optional company name []:vianet

    注:server.csr 这个文件就是要拿给CA厂商签名的,server.key这个私钥文件自己保存好。拿给厂商签名后厂商会用他们的根证书前面这个CSR文件生成你服务器可用证书给你,在这之前我们可以自己充当CA厂商这个角色来测试一下

    4:要生成用来前面CSR文件的根证书,首先创建CA目录
    mkdir ./demoCA
    mkdir demoCA/newcerts
    touch demoCA/index.txt
    echo 01 > demoCA/serial
    5:生成ca.key,并自签名生成ca.crt证书,需要填写密码两次,如1234,填写的Common Name要和上面生成CSR文件一致。其他步骤一样,建议还是按照CSR文件那样填写就好了。
    openssl req -new -x509 -days 36500 -keyout ca.key -out ca.crt -config ./openssl.cnf
       Country Name (2 letter code) [AU]:CN 
        State or Province Name (full name) [Some-State]:Beijin
        Locality Name (eg, city) []:Beijin
        Organization Name (eg, company) [Internet Widgits Pty Ltd]:vianet
        Organizational Unit Name (eg, section) []:vianet
        Common Name (e.g. server FQDN or YOUR name) []:service.azurenet.cn
        Email Address []:yue.li3@21vianet.com
    
    6:使用自签署的CA证书签署服务器CSR证书请求,输入密码,一直按y就好了:
    openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -extensions v3_req -config openssl.cnf

    7:这时候当前目录有这几个文件:ca.key ca.crt server.key server.crt server.csr,其中server.key server.crt就是要放在服务器上的,ca.key相当于电脑内置的根证书

    如果需要证书之间的转换请查看:http://www.cnblogs.com/yueli/p/7478779.html
    到这支持多域名的证书已经制作完成。如有不正确的地请多指教。
  • 相关阅读:
    Qt中 .pro 文件和 .pri 文件简介
    [Android Pro] 完美Android Cursor使用例子(Android数据库操作)
    [Android Pro] Android开发实践:自定义ViewGroup的onLayout()分析
    [Android Pro] Android开发实践:为什么要继承onMeasure()
    [Android Pro] Scroller使用分析
    [Android Pro] 精确记录和恢复ListView滑动位置
    [Android Pro] Android TypedValue.applyDimension()的用法
    [Android Pro] http://blog.csdn.net/wuyinlei/article/category/5773375
    [Android Pro] 判断Uri对应的ContentProvider所操作的数据库u存在,及DownloadManager的暂停,继续
    [Android Pro] 完美解决隐藏Listview和RecyclerView去掉滚动条和滑动到边界阴影的方案
  • 原文地址:https://www.cnblogs.com/yueli/p/7478836.html
Copyright © 2011-2022 走看看