如同阿里和衆多網站一樣
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;
}