1. 程式人生 > >用OpenSSL生成CA根證書來簽名Keytool生成的證書請求

用OpenSSL生成CA根證書來簽名Keytool生成的證書請求

我上一篇文章 (配置JAVA SSL/TLS 之websocket wss互動式認證)生成的證書都是java  keytool 的證書,都是自簽名的證書, 不是第三方簽名的證書。下面我要虛擬一個CA出來, 用CA來簽名。

1、建立CA的私鑰

openssl genrsa -out ca.key 2048

2、建立CA自簽名證書

openssl req -x509 -new -nodes -key ca.key -subj "/CN=localhost" -days 36500 -out ca.crt

3、生成服務端私鑰

keytool -genkey -v -alias server_ks -keysize 2048 -keyalg RSA -dname "CN=localhost" -keypass 123456 -storepass 123456 -keystore ./server.keystore -storetype jks -validity 36500

4、生成證書請求檔案

keytool -certreq -alias   server_ks -keyalg RSA -file ./server.csr  -keystore  ./server.keystore  -keypass 123456 -storepass 123456

5、用CA根證書來簽名伺服器端的證書請求檔案

openssl ca -days 3650 -keyfile ./ca.key -cert ./ca.crt -in ./server.csr -out ./server.pem

[[email protected] newssl]# openssl ca -days 3650 -keyfile ./ca.key -cert ./ca.crt -in ./server.csr -out ./server.pem
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
The mandatory countryName field was missing

上面的錯誤主要是因為  openssl  用到了配置檔案   /etc/pki/tls/openssl.cnf , 而配置檔案 openssl.cnf 裡有:

[ ca ]
default_ca    = CA_default        # The default ca section

然後在節

[ CA_default ] 裡有下面的策略

policy          = policy_match

在節 [ policy_match ] 裡, countryName = match,    把match修改為  optional 即可。

[ policy_match ]
countryName        = match
stateOrProvinceName    = match
organizationName    = match
organizationalUnitName    = optional
commonName        = supplied
emailAddress        = optional

另外還需要注意的是

default_days    = 365                   # how long to certify for     證書的有效期這裡是一年,你可以修改為10年
default_crl_days= 30                    # how long before next CRL    這個還沒搞懂啥意思

6、把CA簽名過的文字檔案證書server.pem轉化為cer二進位制檔案

openssl x509 -in ./server.pem -inform pem -outform der -out ./server.cer

7、將服務端證書匯入到客戶端信任列表中 trustkeystroe.jks
keytool -import -v -alias xxx -keystore ./clientTrust.jks -storepass pwdtesla2017 -file ./server.cer 

然後就可以使用我上傳的原始碼來進行互動式認證通訊了。

希望對大家有用!

相關推薦

OpenSSL生成CA證書簽名Keytool生成證書請求

我上一篇文章 (配置JAVA SSL/TLS 之websocket wss互動式認證)生成的證書都是java  keytool 的證書,都是自簽名的證書, 不是第三方簽名的證書。下面我要虛擬一個CA出來, 用CA來簽名。1、建立CA的私鑰openssl genrsa -out

OpenSSL生成並使用CA證書籤名Keytool生成證書請求

生成私鑰[帶密碼] [root@node00 security]# openssl genrsa [-des3] -out ca.key 2048 Generating RSA private key, 2048 bit long modulus ...............

OpenSSL建立CA和簽發證書,轉換成java可以載入的jks

java的keytool工具本來就可以生成互動式認證的證書, 不過其他語言處理互動式認證的流程貌似和java的keytool的認證流程有些差別,  而openssl是比較通用的工具。大部分語言都會支援openssl生成的證書檔案。用openssl簽發的證書如何才能轉化為key

openssl為WEB服務器生成證書(自簽名CA證書,服務器證書

cat get web con 中文 ssg cer eap rand 用openssl為WEB服務器生成證書(自簽名CA證書,服務器證書) 來源: https://www.cnblogs.com/osnosn/p/10608455.html 來自osnosn的博客 寫於:

nginx反向代理cas-server之2:生成證書,centOS下使用openssl生成CA證書(證書、server證書、client證書)

前些天搭好了cas系統,這幾天一致再搞nginx和cas的反向代理,一直不成功,但是走http還是測試通過的,最終確定是ssl認證證書這一塊的問題,原本我在cas服務端裡的tomcat已經配置了證書,並且能夠使用了,但是現在我用nginx代理使用ssl與cas-server

Windows下openssl命令製作生成證書和自簽名

這些天領導讓我把web service 由原來的HTTP協議改用加密並且加上客戶認證,系統原本用的gsoap,沒辦法只好調查了,現在總結了一些有關openssl生產證書的步驟: 1、 新建工作目錄,將openssl安裝路徑下的apps/CA.pl 和 apps/openss

【HTTPS】使用OpenSSL生成帶有SubjectAltName的自簽名證書

操作步驟 首先新建一個配置檔案 ssl.conf如下: [ req ] default_bits = 4096 distinguished_name = req_distinguished_

openssl命令生成證書

也許很多人和本人一樣深有體會,使用OpenSSL庫寫一個加密通訊過程,程式碼很容易就寫出來了,可是整個工作卻花了了好幾天。除將程式編譯成功外(沒有可以使用的證書檔案,編譯成功了,它並不能跑起來,並不表示它能正常使用,所以......),還需生成必要的證書和私鑰檔案使雙方能夠成

如何使用OpenSSL生成帶有SubjectAltName的自簽名證書

Can someone help me with the exact syntax?它的三步過程,它涉及修改openssl.cnf檔案。你可能能夠使用命令列選項,但我不這樣做。找到你的openssl.cnf檔案。它可能位於/usr/lib/ssl/openssl.cnf:$ find /usr/lib -na

win64使用openssl生成ca證書

一、準備工作: 先安裝Visual C++ 2008Redistributables (x64),然後安裝Win64 OpenSSL v1.0.1j。這裡我安裝到D:\OpenSSL-Win6

openssl生成ca證書,以及過程中遇到的問題總結

相關說明:轉載於:http://www.cnblogs.com/yangyquin/p/5284530.html在原有的基礎上總結了一些本人安裝過程中的一些問題參考資料:http://blog.sina.com.cn/s/blog_7ea5cb4d0100xfce.html 

Apache OpenSSL生成CA證書使用

最近在學習SSL協議,這次是基於Apache伺服器自帶的openssl來實現的TLS:傳輸層安全協議SSL:安全套接字層KEY:私鑰CSR:證書籤名請求,即公鑰,生成證書時需要將此提交給證書機構,生成 X509 數字證書前,一般先由使用者提交證書申請檔案,然後由 CA 來簽發

數字簽名,數字證書CA認證等概念理解

ca 認證 https openssl 本文將介紹數字簽名,數字證書以及CA相關知識。 加密相關知識可見我的上一篇博文:http://watchmen.blog.51cto.com/6091957/1923426本文參考文獻引用鏈接:1、https://www.zhihu.com

jdk生成CA證書

知識庫 tor 證書頒發 r文件 防範 簽名 keystore rfc 輸入 前言: JKS文件是一個Java中的密鑰管理庫。 JKS文件就好像一個倉庫,裏面可以放很多的東西,這裏只存放一類東西就是密鑰,倉庫當然會有一把鎖,防範別人隨便亂拿,這個就是JKS文件的密碼。裏面存

使用keytool生成公鑰、私鑰、證書並且讀取出來,使用私鑰簽名jar並驗證(轉)

工具 crypto upload () 結構 清單文件 style too ref 參考鏈接:http://happyqing.iteye.com/blog/2139504     :https://blog.csdn.net/arjelarxfc/article/det

openssl生成rsa密鑰對

openssl rsa 生成私鑰openssl genrsa -out rsa_1024_pri.pem 1024生成公鑰openssl rsa -pubout -in rsa_1024_pri.pem -out rsa_1024_pub.pem用openssl生成rsa密鑰對

tomcat配置https自簽名證書keytool生成

pri list tin led str orm unit lock pass tomcat配置https自簽名證書(keytool生成) 生成keystore keytool -genkeypair -alias "server" -keyalg &

加密,認證疑難名詞總結----RSA, 公鑰,私鑰,CA,數字簽名,數字證書

成功 digital 出現 直觀 證明 col 文件簽名 nat blog 在網絡和操作系統安全通信中經常涉及到這幾個名詞: RSA, 公鑰,私鑰,CA,數字簽名,數字證書。我找了很多資料,很少有把疑難點講全面的。但不講清楚這幾個,很難有一個清晰的認識和理解。我現在也嘗試這

Linux初級:openssl建立CA及頒發證書

openssl 對稱加密: 工具:openssl enc, gpg 演算法:3des, aes, blowfish, twofish 幫助:man enc 1、 加密:enc對稱演算法加密 -e加密 -des3演算法加密 -a base64編碼 -salt加鹽打亂順序 -in加

C++調openssl生成RSA加密秘鑰對

style alloc fputs bsp lose turn std mem 內存 直接上代碼。默認生成的是pkcs#1格式 // ---- rsa非對稱加解密 ---- // #define KEY_LENGTH 1024 //