TLS原理及證書生成

2021-10-07 00:03:39 字數 1077 閱讀 2889

1、生成rsa金鑰

> openssl genrsa -des3 -out mykey.pem 2048
或者:

> openssl genrsa -out mykey.pem 2048
建議用2048位金鑰,少於此可能會不安全或很快將不安全。

2、生成證書請求

> openssl req -new -key mykey.pem -out cert.csr
cert.csr即乙個證書請求檔案,可以拿著這個檔案去數字證書頒發機構(ca)申請數字證書。ca會給乙個新的檔案cacert.pem,即數字證書。

3、生成證書

若自己測試,則證書的申請機構和頒發機構都是自己。可以用如下命令生成證書:

> openssl req -new -x509 -key mykey.pem -out cert.pem -days 1095
4、使用數字證書和金鑰

有了mykey.pem和cert.pem檔案後就可以在自己的程式中使用了,比如做乙個加密通訊的tcp通訊連線。

tls加密大致原理如下:

簡單說來,tls通訊的核心是使用 非對稱加密 去協商乙個金鑰key,然後通訊雙方使用金鑰key進行對稱加密通訊,具體過程如下:

客戶端獲取伺服器證書(即前面所述的cert.pem),驗證證書合法有效,以確保公鑰來自伺服器,而不是偽造的公鑰。

客戶端生成乙個隨機數a,並使用伺服器證書(cert.pem)中的公鑰加密乙個隨機數a,傳送給伺服器

伺服器用私鑰(即前面所述的mykey.pem )解密得到隨機數a(伺服器私鑰一定要儲存好,不可洩露)

後續雙方使用隨機數a進行對稱加密通訊。

這樣即使資料被第三方攔截,也無法得到隨機數a(因為私鑰只在伺服器手中),所以後續雙方的對稱加密通訊也是安全的。當然,這只是大致原理,具體實現遠遠複雜的多。

以上為個人理解總結,歡迎糾正指教!

kafka SSL證書生成及配置

apache kafka可以使用ssl加密連線,還可以限制客戶端訪問,給客戶端發行證書,只允許持有證書的客戶端訪問。下面使用jdk的keytool工具來生成證書,配置kafka。為了便於演示,ca和伺服器證書使用相同的密碼,如下 kspass x 客戶端證書密碼如下 client pass yyyy...

證書生成 通配證書生成的方法

今天幫乙個朋友搞了點事情,我提供了乙個可完全隱藏wkwebview並且能載入web的sdk提供給對方使用,為了防止sdk在多個專案的復用,限制了這個sdk只能在具體的某個bundle id下執行,正常情況下這樣是沒有問題的。通過換bundle id進行真機測試的方案很合理,但是針對現在這種需要特定的...

ssl證書生成

openssl req new x509 days 3650 nodes out opt ssl certs postfix.pem keyout opt ssl private postfix.pem第乙個是證書,第二個是key 私鑰 可以應用在很多程式上。下面舉兩個例子 nginx postfi...