專案中需要搭建乙個server和client基於證書的雙向認證環境。由我來做,我也不會。
經過一晚上的研究,基本摸清了(知其然不知其所以然)。做下筆記。
基本環境:
1.安裝nginx。
2.安裝openssl。
生成證書:
首先建立乙個工作目錄,這裡以我的工作目錄為例。(/home/myca/),然後執行如下命令。建立生成證書的路徑檔案結構,這是由openssl的預設配置檔案決定的。你可以修改配置。
mkdir拷貝配置檔案到工作目錄。當然字首路徑要換成你自己的。democa
cd democa
touch ./
echo'01
' >serial
mkdir ./newcerts
cd ..
cp /usr/local/ssl/openssl.cnf ./修改配置檔案。編輯openssl.cnf中的一些選項。
unique_subject = no (這樣乙個ca可以同時簽多張證書)
countryname = optional(把這些引數的匹配規則改為可選)
stateorprovincename = optional
organizationname = optional
organizationalunitname = optional
現在我們來生成自己的ca。
openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf生成會話會讓你填入一些引數,紅線標出的是要輸入的,根據實際情況填寫。執行完會發現工作目錄下會有ca.crt ca.key兩個檔案。截圖如下:
接下來生成server端證書。
首先生成server端私鑰。執行後會要求輸入解析私鑰檔案的密碼,根據個人喜好設定。生成server.key。
openssl genrsa -des3 -out server.key 1024生成證書請求。生成會話會提示輸入一些請求資訊,成功後生成server.csr。
openssl req -new -key server.key -out server.csr -config openssl.cnf注意紫色線條標出的一行,這行輸入server端的網域名稱(是我的伺服器位址)。否則簽發的證書會被瀏覽器視為不是本站點的證書。其他根據情況。
現在用生成的ca給證書請求(server.csr)簽發證書。根據提示輸入相關密碼(之前設定好的)和y(yes),成功後生成證書server.crt
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf到這裡,我們已經可以做單項認證了,來試試。
配置nginx:vi /usr/local/nginx/conf/nginx.conf修改配置如下圖(注意證書和ca的路徑是我的工程路徑):
儲存後啟動nginx,會要求輸入server端私鑰檔案解析密碼,輸入生成時設定的密碼。
在windows下開啟firefox輸入回車。
這說明nginx已經向瀏覽器傳送了自己的證書,但是這個證書不受信任。別急,現在我們把之前自己的ca匯入瀏覽器。
開啟 選項->高階->檢視證書->證書機構->匯入。先擇ca後根據提示匯入證書。成功後如下:
再次輸入
回車。
看見中間那行提示了嗎?中式英語翻譯過來就是-->沒有要求的ssl證書來傳送。也就是說,client已經成功認證了server端的證書,但是我們配置nginx為雙向認證,所以nginx要求瀏覽器出示證書,而瀏覽器沒有證書。
說明單項認證已經ok,現在為client生成證書。
首先生成client端私鑰,執行後會要求輸入解析私鑰檔案的密碼,根據個人喜好設定。生成client.key。
openssl genrsa -des3 -out client.key 1024生成證書請求。生成會話會提示輸入一些請求資訊,成功後生成client.csr。
現在用之前生成的ca給證書請求(client.csr)簽發證書。根據提示輸入相關密碼(之前設定好的)和y(yes),成功後生成證書client.crt
openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnffirefox要求客戶端的證書格式是p12格式,所以我們把client.crt轉化為client.p12格式
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12轉pem格式
cat ca.crt ca.key >ca.pem最後一步,把client.p12匯入瀏覽器。cat server.crt server.key >server.pem
cat client.crt client.key > client.pem
開啟 選項->高階->檢視證書->您的證書->匯入。根據提示匯入,匯入成功後如圖:
輸入回車。
nginx配置ssl證書
最近專案中所有的http請求都要公升級到https,實踐了一把配置nginx的ssl證書。由於我們的證書是公司下發的,所以省略了申請證書的體驗,關於申請免費證書可以自行搜尋。拿到的證書分兩個檔案,乙個是 crt,乙個是 key,分別對應公鑰和私鑰。step1.假設我們的nginx安裝目錄是 usr ...
nginx配置ssl證書
1.獲取免費的 ca 證書。2.然後填寫資訊申請 4.上傳證書到你的伺服器 cd usr local nginx conf vhost mkdir cert 將.key和.pem檔案上傳到cert資料夾 5.配置 nginx 最好把之前 80 埠的配置備份乙份 server location loc...
Nginx配置SSL證書
本文主要記錄nginx怎麼配置ssl證書,前提是nginx安裝成功和ssl證書已經獲取。可以看到 nginx的目錄是 usr local nginx 那麼我們需要找到 nginx.conf檔案並修改 cd usr local nginx conf vim nginx.conf 如果使用者使用的是ht...