openssl常用使用總結
介紹
SSL證書通過在客戶端瀏覽器和Web伺服器之間建立一條SSL安全通道(Secure socketlayer(SSL),SSL安全協議主要用來提供對使用者和伺服器的認證;對傳送的資料進行加密和隱藏;確保資料在傳送中不被改變,即資料的完整性,現已成為該領域中全球化的標準。
證書檔案字尾介紹
.key:私用金鑰,openssl格式,通常是rsa演算法。
.csr:證書請求檔案,用於申請證書。在製作csr檔案的時候,必須使用自己的私鑰來簽署申請,還可以設定一個金鑰,certificate signing request的縮寫。
.crt:CA認證後的證書檔案(windows下面的csr,其實是crt),簽署人用自己的key給你簽署的憑證,certificate的縮寫。
.pem:用於匯出,匯入證書時候的證書的格式,有證書開頭,結尾的格式
.crl格式:證書吊銷列表,Certificate Revocation List的縮寫
證書生成流程
CA根證書的生成
生成CA私鑰(.key)---->生成CA證書請求(.csr)----->自簽名得到根證書(.crt)(CA給自已頒發的證書)。
使用者證書的生成
生成私鑰(.key)---->生成證書請求(.csr)---->用CA根證書籤名得到證書(.crt) (如果沒有CA證書,用x509替代,x509相當於小型的內建的CA)
使用 x509 進行生成證書(不用自己生成CA)
x509證書一般會用到三類檔案,key,csr,crt。
1.生成一個RSA金鑰,這個是自己生成的私鑰
[root@localhost ssl]# openssl genrsa -des3 -out nginx.key 1024 #實際使用中看伺服器效能,如果足夠好也可以使用4096位祕鑰
Generating RSA private key, 1024 bit long modulus
…….++++++
…++++++
e is 65537 (0x10001)
Enter pass phrase for nginx.key: #輸入密碼,自定義,不少於4個字元
Verifying - Enter pass phrase for nginx.key: #確認密碼
#也可以使用引數 -passout pass:123456 就不用再填密碼了
2.生成一個證書請求
[root@localhost ssl]# openssl req -new -key nginx.key -out nginx.csr
Enter pass phrase for nginx.key: #輸入剛剛建立的祕密碼
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
Country Name (2 letter code) [XX]:CN #國家名稱
State or Province Name (full name) []:xxxx #省
Locality Name (eg, city) [Default City]:xxxxx #市
Organization Name (eg, company) [Default Company Ltd]:xxxxx #公司
Organizational Unit Name (eg, section) []:xxxxxx #部門
Common Name (eg, your name or your server's hostname) []:.mydomain.com #注意,此處應當填寫你要部署的域名,如果是單個則直接新增即可,如果不確定,使用,表示可以對所有mydomain.com的子域名做認證
Email Address []:admin@mydomain.com #以域名結尾即可
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: #是否設定密碼,可以不寫直接回車
3.建立不需要輸入密碼的RSA證書,否則每次reload、restart nginx都需要輸入密碼(一個場景而已)
[root@localhost ssl]# openssl rsa -in nginx.key -out nginx_nopass.key
Enter pass phrase for nginx.key: #之前RSA祕鑰建立時的密碼 writing RSA key
4.簽發證書
[root@localhost ssl]# openssl x509 -req -days 36500 -in nginx.csr -signkey nginx.key -out nginx.crt
Signature ok subject=/C=CN/ST=xxxx/L=xxxxx/O=xxxxx/OU=xxxxx/CN=*.mydomain.com/emailAddress=admin@mydomain.com Getting Private key Enter pass phrase for nginx.key: #RSA建立時的密碼 days代表證書有效天數,先弄個十年的。
之後把nginx.crt證書和nginx_nopass.key 檔案配置進入nginx即可。
自己生成CA證書,並給自己使用者簽證
# Generate CA private key
openssl genrsa -out ca.key 2048
# Generate CSR
openssl req -new -key ca.key -out ca.csr
# Generate Self Signed certificate(CA 根證書)
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
你看到的沒錯,即使是CA根證書也要x509進行建立
然後用自己建立的CA給服務端簽證
# private key
$openssl genrsa -des3 -out server.key 1024
# generate csr
$openssl req -new -key server.key -out server.csr
# generate certificate
$openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
生成pem格式證書:
有時需要用到pem格式的證書,可以用以下方式合併證書檔案(crt)和私鑰檔案(key)來生成
$cat server.crt server.key > server.pem
相關文章
- Emgucv使用中常用函式總結函式
- QTreeView使用總結2,常用API介紹QTViewAPI
- 常用TS總結
- numpy 常用總結
- 【vim】常用總結
- 常用快取系統使用經驗總結快取
- LaTeX中各種常用盒子的使用總結
- 常用js方法總結:JS
- 常用kubectl命令總結
- github常用指令總結Github
- java常用Api總結JavaAPI
- phaser常用API總結API
- 常用git命令總結Git
- 常用PDF庫總結
- ?Git 常用操作總結Git
- Rails常用gem總結AI
- css常用大總結CSS
- Dapper常用方法總結APP
- openssl命令使用
- Object物件常用方法總結Object物件
- 常用Java集合類總結Java
- Python字串常用方法總結Python字串
- Vue專案常用總結Vue
- Javascript Object常用方法總結JavaScriptObject
- 【個人總結】常用技巧
- jQuery常用方法總結【三】jQuery
- PHP常用函式總結PHP函式
- CSS-@規則(At-rules)常用語法使用總結CSS
- Butter Knife常用用法總結
- node 常用命令總結
- Laravel – Artisan 個人常用總結Laravel
- Git常用命令總結Git
- javascript中字串常用操作總結JavaScript字串
- JS 常用方法總結記錄JS
- 常用正規表示式總結
- Spring/SpringBoot常用註解總結Spring Boot
- Docker 常用命令總結Docker
- Kafka 常用命令總結Kafka