HTTPS證書集成——SSL證書上傳Pem解析

如同阿里和衆多網站一樣
https://help.aliyun.com/document_detail/98573.html
通過解析Pem實現證書上傳
在這裏插入圖片描述
要解析必須先理解Pem證書文件和私鑰的加密過程。

Pem

先看:
openssl幾個加密算法使用
https://www.cnblogs.com/lexiaofei/p/8442245.html
密鑰文件的格式用OpenSSL生成的就只有PEM和DER兩種格式,PEM的是將密鑰用base64編碼表示出來的

OpenSSL生成Pem證書和Pem私鑰

轉載:
https://blog.csdn.net/weixin_30531261/article/details/80891360
自己在之前的基礎上整理了一下

1、生成RSA密鑰的方法 

openssl genrsa -des3 -out privkey.pem 2048 
這個命令會生成一個2048位的密鑰,同時有一個des3方法加密的密碼,如果你不想要每次都輸入密碼,可以改成: 
openssl genrsa -out privkey.pem 2048 
建議用2048位密鑰,少於此可能會不安全或很快將不安全。 

2、生成一個證書請求 
openssl req -new -key privkey.pem -out cert.csr 
這個命令將會生成一個證書請求,當然,用到了前面生成的密鑰privkey.pem文件 
這裏將生成一個新的文件cert.csr,即一個證書請求文件,你可以拿着這個文件去數字證書頒發機構(即CA)申請一個數字證書。CA會給你一個新的文件cacert.pem,那纔是你的數字證書。 

如果是自己做測試,那麼證書的申請機構和頒發機構都是自己。就可以用下面這個命令來生成證書: 
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095 
這個命令將用上面生成的密鑰privkey.pem生成一個數字證書cacert.pem 

3,第1步只使用rsa 祕鑰結合openssl進行base64進行加密了,還需要轉成pkcs8的格式(輸入openssl在openssl的shell下進行)
pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM –nocrypt

上述加密過程:
Pem私鑰:使用rsa祕鑰通過openssl進行base64進行加密,之後轉換成了pkcs8的格式
證書Pem碼:對x509格式的證書結合私鑰進行base64加密

解密

獲取私鑰

 public static PrivateKey getPrivateKey(String priKey) throws IOException, NoSuchAlgorithmException, InvalidKeySpecException {
        //將BASE64編碼的私鑰字符串進行解碼

        BASE64Decoder decoder = new BASE64Decoder();

        byte[] encodeByte = decoder.decodeBuffer(priKey);
        // 獲取rsa祕鑰

        KeyFactory keyFactory = KeyFactory.getInstance("RSA");

        //將BASE64解碼後的字節數組 結合 rsa祕鑰,構造成PKCS8EncodedKeySpec對象,生成私鑰對象

        PrivateKey privatekey = keyFactory.generatePrivate(new PKCS8EncodedKeySpec(encodeByte));
        return privatekey;

    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章