隨著個人隱私越來越受重視, HTTPS也漸漸的流行起來, 甚至有許多網(wǎng)站都做到了全站HTTPS,
然而這種加密和信任機(jī)制也不斷遭遇挑戰(zhàn),比如戴爾根證書攜帶私鑰,Xboxlive證書私鑰瀉露,
還有前一段時間的沃通錯誤頒發(fā)Github根域名SSL證書事件. 因此本文從非對稱加密說起,
介紹了證書的簽證流程, 并且通過openssl的命令行工具對這些過程都轉(zhuǎn)化為相對具體的命令,
也算是一個溫故知新的簡要記錄吧.
前言
一般來說,常見的數(shù)字加密方式都可以分為兩類,即對稱加密和非對稱加密. 對于對稱加密來說,
加密和解密用的是同一個密鑰, 加密方法有AES,DES,RC4,BlowFish等; 對應(yīng)的, 非對稱加密在
加密和解密時, 用的是不同的密鑰, 分別稱為公鑰或私鑰. 非對稱加密的加密方法有RSA, DSA,
Diffie-Hellman等.
OpenSSL是一個開源項(xiàng)目,為傳輸層安全(TLS)和安全套接字(SSL)協(xié)議提供了比較完整的實(shí)現(xiàn),
同時也致力于將自身打造為一個通用的密碼學(xué)工具集. 其中包括:
- libssl : 提供了SSL(包括SSLv3)和TLS的服務(wù)器端以及客戶端的實(shí)現(xiàn).
- libcrypto : 通用的密碼學(xué)庫以及對X.509的支持
- openssl : 一個多功能的命令行工具
本文主要使用openssl的命令行工具來示例非對稱加密的流程, 如果有興趣的話,也可以用其SDK
來實(shí)現(xiàn)更具體的操作.
加解密過程
創(chuàng)建公私鑰對
首先用openssl生成私鑰:
openssl genrsa -out private.pem 1024 當(dāng)然為了更加安全,可以在生成私鑰的時候同時指定密碼, 這樣即使不小心瀉露了私鑰,也能增加別人的盜用難度:
openssl genrsa -aes256 -passout stdin -out private.pem 1024 o