隨筆-openssl證書的生成和使用
證書類別
– 根證書 生成伺服器證書,客戶端證書的基礎。自簽名。
– 伺服器證書 由根證書籤發。配置在伺服器上。
– 客戶端證書 由根證書籤發。配置在伺服器上,併傳送給客戶,讓客戶安裝在瀏覽器裡。
要注意,
1. 伺服器證書的cn要和servername一致,否則啟動httpd時有警告。
2. 瀏覽器安裝客戶端證書時,需要用pkcs12轉換成pfx格式,否則可以安裝但無效。
3. 把根證書安裝到瀏覽器的受信CA中,訪問伺服器時就不會出警告了。
環境: CentOS6_x64 openssl 1.0.1 apache2.2
準備
echo -n > /etc/pki/CA/index.txt
echo `00` > /etc/pki/CA/serial
注意,index.txt需要初始化為0位元組,連換行也不能有。
1 根證書
# 修改/etc/pki/tls/openssl.cnf,放開nsCertType= server的註釋。
[ usr_cert ]
nsCertType = server
cd /etc/pki/CA
# 生成金鑰
openssl genrsa -out private/myCA.key 1024
# 生成自簽名證書
openssl req -new -x509 -key private/myCA.key -out certs/myCA.crt
把這個crt匯入客戶端瀏覽器,就不會顯示證書警告了。
2 伺服器證書
cd /etc/pki/tls
openssl genrsa -out private/sv.key 1024
# 生成請求
openssl req -new -key private/sv.key -out private/sv.csr
# 使用根證書籤名
openssl ca -in private/sv.csr -keyfile ../CA/private/myCA.key -cert ../CA/certs/myCA.crt -out certs/sv.crt
有時,簽發多個證書時,由於common name等資訊重複導致簽名失敗,
可以初始化index.txt和serial。
3 客戶端證書
# 修改/etc/pki/tls/openssl.cnf,註釋掉nsCertType= server,去掉的nsCertType = client, email註釋。
[ usr_cert ]
nsCertType = client, email
cd /etc/pki/tls
openssl genrsa -out private/clnt1.key 1024
openssl req -new -key private/clnt1.key -out private/clnt1.csr
openssl ca -in private/clnt1.csr -keyfile ../CA/private/myCA.key -cert ../CA/certs/myCA.crt -out certs/clnt1.crt
個人證書需要轉成pfx格式
openssl pkcs12 -export -in certs/clnt1.crt -out certs/clnt1.pfx -inkey private/clnt1.key
apache 配置
SSLCertificateFile /etc/pki/tls/certs/sv.crt
SSLCertificateKeyFile /etc/pki/tls/private/sv.key
SSLCertificateChainFile /etc/pki/tls/certs/chain.crt <--這個從哪兒來的?
SSLCACertificateFile /etc/pki/tls/certs/myCA.crt
SSLVerifyClient require
SSLVerifyDepth 1
nginx配置
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/pki/tls/certs/sv2.crt;
ssl_certificate_key /etc/pki/tls/private/sv2.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_client_certificate /etc/pki/CA/certs/myCA.crt;
ssl_verify_client on;
ssl_verify_depth 1;
另外,遇到了證書不能刪除的問題。解決方法是:
使用mmc,進入 證書,即可刪除。
windows上配置nginx時,可能遇到快取等模組不可用的情況,
需要註釋掉ssl_session_cache等。
生成dh引數:
dhparam -out dh1024.pem 1024
相關文章
- 使用OpenSSL生成證書
- openssl生成證書
- mac 上使用OpenSSL 生成RSA證書Mac
- 使用OpenSSL生成自簽名SSL證書
- openssl生成自簽名證書
- openssl 證書生成筆記(go 1.15版本以上)筆記Go
- 使用OpenSSL建立生成CA證書、伺服器、客戶端證書及金鑰伺服器客戶端
- OpenSSL 生成 RootCA (根證書)並自簽署證書(支援 IP 地址)
- 使用OpenSSL生成自簽名證書(IIS)搭建Https站點HTTP
- fabric-ca載入openssl生成的ecdsa標準證書
- https--OpenSSL生成root CA及簽發證書HTTP
- 使用 OpenSSL 建立私有 CA:1 根證書
- 通過OpenSSL來生成二進位制格式證書檔案(pfx和cer)
- 使用 OpenSSL 建立私有 CA:3 使用者證書
- 使用 OpenSSL 建立私有 CA:2 中間證書
- 使用 openssl 命令列構建 CA 及證書命令列
- mac下證書的生成與使用Mac
- 【加解密】使用CFSSL生成證書並使用gRPC驗證證書解密RPC
- 使用openssl生成rsa公鑰和私鑰
- 如何使用Docker生成SSL證書Docker
- Mac 使用openssl生成RSA公鑰和私鑰Mac
- OPENSSL 製作 Ikev2證書
- openssl提取pfx證書金鑰對
- OpenSSL學習筆記:openssl命令列的使用筆記命令列
- RSA的主場-證書籤名&OpenSSL演示
- 使用OpenSSL轉換X509 PEM與PFX證書
- ssl 生成證書
- 記錄 openssl 證書驗證失敗的詭異問題
- 一個完整的類用來讀取OpenSSL生成的pem格式的x509證書
- openSSL生成公鑰和私鑰
- 線上生成ios證書的流程iOS
- 生成https證書HTTP
- PostgreSQL生成隨機身份證IDSQL隨機
- php使用openssl生成公鑰私鑰PHP
- HTTPS 證書生成原理和部署細節HTTP
- .NET 6學習筆記(8)生成自簽證書筆記
- MAC OSX 下 使用openssl 命令 生成RSA公鑰和私鑰Mac
- openssl建立證書,非常詳細配置ssl+apacheApache