当前位置 博文首页 > JustinQin:网络安全--keytool CA签名SSL证书(收费)

    JustinQin:网络安全--keytool CA签名SSL证书(收费)

    作者:[db:作者] 时间:2021-09-12 09:04

    本文主要介绍keytool CA签名SSL证书(收费),点击查看keytool自签名SSL证书(免费)以及私钥签名、公钥验签流程

    最近给银行做一个系统,虽说是给行内使用的,但是系统要同时支持内外网方式登录,采用https(http+ssl)传输协议,经过SSL加密信息,防止用户信息被截获。

    因此花了一段时间研究这方面的知识,主要从JDK自带keytool入手,研究如何通过keytool最终得到CA签名的SSL证书。

    百度百科【CA】
    证书颁发机构(CA, Certificate Authority)即颁发数字证书的机构。是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。科

    百度百科【SSL】
    Secure Sockets Layer 安全套接层及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

    对于JDK自带的keytool指令,不论Windows还是Linux,该指令文件存放在JAVA_HOME/bin目录下,使用的前提是系统已搭建好JDK环境且配置JAVA环境变量。

    正文以Linux操作为例,/usr/local/keys/是我个人证书文件存放路径,实际请自行替换相关路径。

    相关文件

    证书库www.justinqin.com_keystore.keystore
    证书请求文件www.justinqin.com_certreq.csr
    根证书root_cert.cer
    签名证书www.justinqin.com_cert.cer

    目录

    一、生成证书库

    二、生成证书请求文件

    三、申请根证书、签名证书

    四、根证书、签名证书导入证书库


    一、生成证书库

    keytool -genkeypair \
    ? ? ? ? -alias www.justinqin.com \
    ? ? ? ? -keyalg RSA \
    ? ? ? ? -keysize 2048 \
    ? ? ? ? -keypass mypassword \
    ? ? ? ? -sigalg SHA256withRSA \
    ? ? ? ? -dname "cn=www.justinqin.com,ou=justinqin,o=qjg,l=Shenzhen,st=Guangdong,c=CN" \
    ? ? ? ? -validity 1095 \
    ? ? ? ? -keystore /usr/local/keys/www.justinqin.com_keystore.keystore \
    ? ? ? ? -storetype JKS \
    ? ? ? ? -storepass mypassword

    ==================参数含义=======================
    -genkeypair
    非对称密钥(密钥对,私钥签名、公钥验签),对称密钥为-gendeskey(单个密钥)

    -alias www.justinqin.com
    证书库别名为www.justinqin.com

    -keyalg RSA
    加密算法为RSA,加密算法可以分为对称加密、不对称加密和不可逆加密算法
    对称加密算法:加解密都用的同一把密钥,如DES、AES
    不对称加密算法:使用密钥对即公钥、私钥进行加解密,如RSA SHS
    不可逆加密算法:加密过程中不需要密钥,明文加密成密文后不可逆,如MD5
    MD5、SHS的加密都是用了哈希加密算法

    -keysize 2048
    密钥长度,位数越大越安全,但同时加解密时间成正比增长

    -keypass mypassword
    私钥密码为mypassword

    -sigalg SHA256withRSA
    签名算法为SHA256withRSA
    keyalg=RSA时,sigalg可选MD5withRSA、SHA1withRSA、SHA256withRSA、SHA384withRSA、SHA512withRSA
    keyalg=DSA时,sigalg可选SHA1withDSA、SHA256withDSA

    ?-dname "cn=www.justinqin.com,ou=justinqin,o=qjg,l=Shenzhen,st=Guangdong,c=CN"
    证书相关信息
    CN=名字与姓氏/域名
    OU=组织单位名称
    O=组织名称
    L=城市或区域名称
    ST=州或省份名称
    C=单位的两字母国家代码

    -keystore /usr/local/keys/www.justinqin.com_keystore.keystore
    生成的证书库文件为www.justinqin.com_keystore.keystore,存储位置/usr/local/keys/

    -validity 1095
    证书有效天数为3年=1095

    -storetype JKS
    证书库类型为JKS,JDK1.9以前默认JKS,JDK1.9及以后默认PKCS12

    -storepass mypassword
    证书库密码为mypassword

    二、生成证书请求文件

    keytool -certreq \
    ? ? ? ? -keyalg RSA \
    ? ? ? ? -alias www.justinqin.com \
    ? ? ? ? -keystore /usr/local/keys/www.justinqin.com_keystore.keystore \
    ? ? ? ? -storetype JKS \
    ? ? ? ? -storepass mypassword \
    ? ? ? ? -file /usr/local/keys/www.justinqin.com_certreq.csr

    ==================参数含义=======================
    -certreq
    证书请求文件

    -file /usr/local/keys/www.justinqin.com_certreq.csr
    生成的证书请求文件为www.justinqin.com_certreq.csr,存储位置/usr/local/keys/

    三、申请根证书、签名证书

    用户提供证书请求文件,向CA申请根证书、签名证书流程
    用户—>证书请求文件 —>CA(收钱)—>根证书、签名证书—>用户

    四、根证书、签名证书导入证书库

    根证书root_cert.cer—>证书库www.justinqin.com_keystore.keystore

    keytool -import -trustcacerts \
    ? ? ? ? -keystore /usr/local/keys/www.justinqin.com_keystore.keystore \
    ? ? ? ? -storepass mypassword \
    ? ? ? ? -alias root_cert \
    ? ? ? ? -file root_cert.cer

    签名证书www.justinqin.com_cert.cer—>证书库www.justinqin.com_keystore.keystore

    keytool -import -trustcacerts \
    ? ? ? ? -keystore /usr/local/keys/www.justinqin.com_keystore.keystore \
    ? ? ? ? -storepass mypassword \
    ? ? ? ? -alias www.justinqin.com \
    ? ? ? ? -file /usr/local/keys/www.justinqin.com_cert.cer

    =========================证书查看相关指令==============
    证书库www.justinqin.com_keystore.keystore查看

    keytool -list -v \
    ? ? ? ? -keystore /usr/local/keys/www.justinqin.com_keystore.keystore \
    ? ? ? ? -storepass mypassword


    证书请求文件keys/www.justinqin.com_certreq.csr查看

    keytool -printcertreq ?-file /usr/local/keys/www.justinqin.com_certreq.csr


    CA根证书root_cert.cer查看

    keytool -printcert -file root_cert.cer


    ?

    cs