当前位置 博文首页 > 莫忘、初心:linux使用openssl 生成 .crt .key .keystore

    莫忘、初心:linux使用openssl 生成 .crt .key .keystore

    作者:[db:作者] 时间:2021-08-04 21:52


    新建一个ssl.cnf


    [req]
    distinguished_name = req_distinguished_name
    req_extensions = v3_req
    
    [req_distinguished_name]
    countryName = CN
    
    stateOrProvinceName = BeiJing
    
    localityName = BeiJing
    organizationName = GS Ltd		### 公司缩写 Ltd
    
    organizationalUnitName = GS		### 公司缩写
    
    commonName = 192.168.1.1
    
    commonName_max = 64
    
    [v3_req]
    basicConstraints = CA:TRUE
    subjectAltName = @alt_names
    
    [alt_names]
    #根据需要可以添加多个,我在测试时使用内网IP,一直提示hostname not verified ,
    #后来在这里添加了自己的ip就可以了
    IP.1 = 192.168.1.1
    IP.2 = 192.168.1.2
    

    生成key

    [root@192-168-1-1 ssl] openssl genrsa -des3 -out ssl.key 4096
    Generating RSA private key, 4096 bit long modulus
    ................................................................................++
    e is 65537 (0x10001)
    Enter pass phrase for ssl.key:					##输入密码 123456
    Verifying - Enter pass phrase for ssl.key:          ## 再次输入密码  123456
    
    

    genrsa: 产生rsa密钥命令
    -out: 输出路径


    根据key和cnf生产crt

    [root@192-168-1-1 ssl]# openssl req -new -x509 -days 365 -key ssl.key -out ssl.crt -extensions v3_req -config ssl.cnf
    Enter pass phrase for ssl.key:  ##输入key的密码 123456
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    CN []:CN
    BeiJing []:BeiJing
    BeiJing []:BeiJing
    GS Ltd []:GS Ltd
    GS []:GS
    192.168.1.1 []:192.168.1.1
    

    -new:表示生成一个新证书签署请求

    -x509:专用于CA生成自签证书,如果不是自签证书则不需要此项

    -key:用到的私钥文件

    -out:证书的保存路径

    -days:证书的有效期限,单位是day(天),默认是openssl.cnf的default_days

    查看.crt的详细信息

    openssl x509 -in ssl.crt -noout -text
    

    生产keystore

    [root@192-168-1-1 ssl]# openssl pkcs12 -export -in ssl.crt -inkey ssl.key -out ssl.p12 -name ssl -CAfile ssl.crt -caname root -chain
    Enter pass phrase for ssl.key:  ##输入key的密码 123456
    Enter Export Password:  ##输入密码 123456
    Verifying - Enter Export Password:   ##输入密码 123456
    
    [root@192-168-1-1 ssl]# keytool -importkeystore -v  -srckeystore ssl.p12 -srcstoretype pkcs12 -srcstorepass 123456 -destkeystore ssl.keystore -deststoretype jks -deststorepass 123456 
    正在将密钥库 ssl.p12 导入到 ssl.keystore...
    已成功导入别名 ssl 的条目。
    已完成导入命令: 1 个条目成功导入, 0 个条目失败或取消
    [正在存储ssl.keystore]
    
    Warning:
    JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore ssl.keystore -destkeystore ssl.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
    
    [root@192-168-1-1 ssl]# keytool -importkeystore -srckeystore ssl.keystore -destkeystore ssl.keystore -deststoretype pkcs12
    输入源密钥库口令:  
    已成功导入别名 ssl 的条目。
    已完成导入命令: 1 个条目成功导入, 0 个条目失败或取消
    
    Warning:
    已将 "ssl.keystore" 迁移到 Non JKS/JCEKS。将 JKS 密钥库作为 "ssl.keystore.old" 进行了备份。
    
    

    cs
    下一篇:没有了