1. 程式人生 > >Https、OpenSSL自建CA證書及簽發證書、nginx單向認證、雙向認證及使用Java訪問

Https、OpenSSL自建CA證書及簽發證書、nginx單向認證、雙向認證及使用Java訪問

1.5 image echo create etc 保存 config openss ima

0.環境

技術分享

安裝了nginx,安裝了openssl

1.配置和腳本

先創建一個demo目錄(位置自己選擇,我選擇建在nginx的目錄下):

mkdir /etc/nginx/ca-demo
cd /etc/nginx/ca-demo

修改SSL配置openssl.cnf(也可能是openssl.conf,不知道在哪可以用find -name / openssl.cnf查找)

將dir屬性改成你上一步自建的目錄,不要用相對路徑,會踩坑,保存,如圖:

技術分享

我喜歡自動化,所以寫了三個如下腳本,可以直接使用:

ca.sh:

#!/bin/bash

#Create directory hierarchy.創建目錄結構
touch index.txt serial chmod 666 index.txt serial echo 01 > serial mkdir -p newcerts private
#生成RSA密鑰對 openssl genrsa
-des3 -out ./private/cakey.pem 2048 #openssl req -new -days 365 -key ./private/cakey.pem -out ca.csr #openssl ca -selfsign -in ca.csr -out ca.crt # one step.一步生成csr,crt,直接10年使用期 openssl req
-new -x509 -days 3650 -key ./private/cakey.pem -out ca.crt

server.sh:

#!/bin/bash
# 簽發服務器證書
mkdir server
openssl genrsa -out ./server/server.key
openssl req -new -key ./server/server.key -out ./server/server.csr
openssl ca -in ./server/server.csr -cert ./ca.crt -keyfile ./private/cakey.pem -out ./server/server.crt -days 3650

client.sh:

#!/bin/bash
# 簽發client證書
mkdir client
openssl genrsa -des3 -out ./client/client.key 2048
openssl req -new -key ./client/client.key -out ./client/client.csr
openssl ca -in ./client/client.csr -cert ./ca.crt -keyfile ./private/cakey.pem -out ./client/client.crt -config "/etc/ssl/openssl.cnf"
openssl pkcs12 -export -clcerts -in ./client/client.crt -inkey ./client/client.key -out ./client/client.p12

以上三個腳本都可以在 https://github.com/dreamingodd/CA-generation-demo 找到

將以上三個腳本復制到自建demo目錄中,如下所示:

技術分享

加入運行權限:

chmod +x *.sh

結果如下:

技術分享

未完待續...

To be Continued...

Https、OpenSSL自建CA證書及簽發證書、nginx單向認證、雙向認證及使用Java訪問