2020/11/2

用 tls 通訊 Boost 的 example

boost asio 有 ssl 的 programming example: 但是沒有操作說明。

這一篇是 操作說明,可惜是以 windows 為 platform
.. 現在在 linux 上試試看。

這一篇 也有產生 key, crt 和example 修改的範例
這一篇用 boost asio ssl 模擬 browser 對 https 的 request 動作。



先亂寫一下...,不知道政不正確...

SSL certication
  • Cryptographic Key
  • server/domain , organization name
某網站的公鑰

然後這個 certication 是經果某個機構認證的。
機構:Cerfitication Authority (CA)

把自己的 public key 和自己的 location, domain name 包成 CSR (Certificate Signing Request) 格式,交給 CA
CA 會去檢查你是不是就是這個 CSR 內的 domain owner
-- 會要求你提供一堆資料。

CA 確認的話,CA 就會寄一份 SSL certification 給你,內容包含你的機構名稱,public key。
然後你就可以把這個SSL certication 放在你的 server 中。

CA 寄給你的 SSL certification 會包另一個 " trust root" 的 certification。

Browser 都會內建一堆 CA 機構的的 Root certification。
這樣舊知道你的 SSL certification 是不是真的。

browser 收到你用 private 加密的內容。
browser 有你的 SSL 憑證,包含一個CA root 的認證。好確保這個憑證是真的。
裡面有你的 public key,可以用來解開你用 private key 加密的內容。


CSR 送給 CA 機構,他確認正確後,就會把CSR 的資料斷做 checksum,然後用CA 自己的 private key 加密後,附在你的 CSR 後面。t
這就是CRT 了。
CA 會把 CRT 寄給你。


browser 都有內建一堆 CA 的 public key.
所以收到某網站的 CRT,他先用 CA 的 public key 確認這格 CRT 真的是 CA 認可(sign) 過得。
然後因為 checksum 的關係,。同時確認這格 CRT 沒有被修改。
這樣他就可以相信這個 CRT 裡的 public key 跟 domain 資料。
舊可以用 public key 來解開/確認這格 domain 用 private key 加密過後的資料。



openssl 可以作到所有的事,也可以用來列出 CSR, CRT, Key 的內容。

產生 private key
openssl genesa -out mypriv.key 4096
用private key 做出 CSR
openssl req -out mysite.csr -key mypriv.key -new



這一篇 使用 openssl 產生 private/public key pair。
然後各自加密檔案,再用對方解密。
同時還說明 crt 中用來 verify signature 的方法(command)


這一篇直接寫出command.
# Generate keys
openssl genrsa -out key.pem
openssl rsa -in key.pem -out key.pub -pubout

# Encrypt and Decrypt a file (using public key to encrypt)
echo --pass-- >> pass.txt
openssl rsautl -in pass.txt -out pass.enc -pubin -inkey key.pub -encrypt
openssl rsautl -in pass.enc -out pass.dec -inkey key.pem -decrypt
cat pass.dec

沒有留言:

張貼留言