1. 程式人生 > >OpenSSL建立帶SAN擴充套件的證書並進行CA自籤

OpenSSL建立帶SAN擴充套件的證書並進行CA自籤

什麼是 SAN

SAN(Subject Alternative Name) 是 SSL 標準 x509 中定義的一個擴充套件。使用了 SAN 欄位的 SSL 證書,可以擴充套件此證書支援的域名,使得一個證書可以支援多個不同域名的解析。

來看看百度的證書,百度證書的擴充套件域名有這麼多,其中還有了*.hao123.com,那我們再看看www.hao123.com的證書

image.png
發現的確是用的前面的百度證書

image.png
所以SAN帶來的好處就可以看出來了,一個證書可以用在各種不同的域名下,不需要一個域名買一個證書了。

利用OpenSSL建立證書

因為是本地環境,直接用OpenSSL給自己頒發一個CA根證書用於後面給伺服器做CA簽署。
1. 生成CA金鑰

openssl genrsa -des3 -out ca.key 2048
  1. 生成CA根證書
openssl req -sha256 -new -x509 -days 365 -key ca.key -out ca.crt \
    -subj "/C=CN/ST=GD/L=SZ/O=lee/OU=study/CN=testRoot"
  1. 生成伺服器金鑰
openssl genrsa -des3 -out server.key 2048
  1. 生成伺服器證書請求檔案
openssl req -new \
    -sha256 \
    -key server.key \
    -subj "/C=CN/ST=GD/L=SZ/O=lee/OU=study/CN=bdstatic.com"
\
-reqexts SAN \ -config <(cat /etc/pki/tls/openssl.cnf \ <(printf "[SAN]\nsubjectAltName=DNS:*.bdstatic.com,DNS:*.baidu.com")) \ -out server.csr

5.CA簽署伺服器證書

openssl ca -in server.csr \
        -md sha256 \
        -keyfile ca.key \
    -cert ca.crt \
    -extensions SAN \
-config <(cat /etc/pki/tls/openssl.cnf \ <(printf "[SAN]\nsubjectAltName=DNS:*.bdstatic.com,DNS:*.baidu.com")) \ -out server.crt

之後把生成好的伺服器證書和伺服器金鑰在伺服器(ngnix,tomcat)裡配置好,並且把ca.crt證書匯入到瀏覽器的受信任的根證書頒發機構裡,在瀏覽器訪問就不會有紅叉叉了。

image.png

image.png

注意事項

  1. -subj “/C=CN/ST=GD/L=SZ/O=lee/OU=study/CN=testRoot”這行可以不要,會有命令互動填寫相關資訊。

image.png
2. 雜湊演算法不要使用sha1,因為Chrome瀏覽器下會提示不安全,上面都是用的sha256。
3. /etc/pki/tls/openssl.cnf檔案是預設的OpenSSL配置檔案,可能環境不同路徑也不同。
4. 伺服器證書請求檔案的國家,省,市要和CA證書一致,這個在openssl.cnf預設配置中指定了,可以修改。

//私鑰轉成PKCS8格式
openssl pkcs8 -topk8 -nocrypt -in server.key -out server_pri.pem

程式碼如下

SslContext serverSslCtx = SslContextBuilder.forServer(new File("E:/server.crt"),new File("E:/server_pri.pem")).build();

附錄

PKCS1與PKCS8格式互轉

//預設生成PKCS1格式PEM編碼私鑰
openssl genrsa -out ca.key 2048
//轉換成PKCS8
openssl pkcs8 -topk8 -nocrypt -in ca.key -out ca_private.pem
//PKCS8轉換成PKCS1
openssl rsa -in ca_private.pem -out ca.key

PEM與DER互轉

//PEM轉DER
openssl rsa -in ca.key -outform DER -out ca_private.der
openssl pkcs8 -topk8 -nocrypt -inform PEM -outform DER -in ca.key -out ca_private.der
//DER轉PEM
openssl rsa -in ca_private.der -inform DER -outform PEM -out ca.key

PKCS7轉PKCS12(tomcat證書)

//需加密碼保護
openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -name tomcat -out server.p12

//springboot SSL配置
server.port= 8443   //埠
server.ssl.key-store=classpath:server.p12   //證書路徑
server.ssl.key-store-password= 123456   //p12證書密碼

參考

相關推薦

OpenSSL建立SAN擴充套件證書進行CA

什麼是 SAN SAN(Subject Alternative Name) 是 SSL 標準 x509 中定義的一個擴充套件。使用了 SAN 欄位的 SSL 證書,可以擴充套件此證書支援的域名,使得一個證書可以支援多個不同域名的解析。 來看看百度的證書,百度

建立哈夫曼樹進行哈夫曼編碼與哈夫曼譯碼

圖例 以上圖例解釋: c語言實現程式碼: #include<stdio.h> #include<malloc.h> #include<string.h> #define N 100 #define

【electron】electron入門 教你如何建立第一個electron應用 進行打包【超詳細】

前言 electron 是一個可以讓我們使用js建立桌面應用程式的框架,並且可以很簡單的實現跨平臺,讓我們可以更輕鬆的書寫業務邏輯,而不用擔心跨平臺的問題。事實上,electron可以被看做一個精簡版的Chrome,內部的V8直譯器固然很強大,但是對比

Lucene筆記33-Lucene的擴充套件-使用Tika建立索引進行搜尋

一、使用Tika建立索引 之前建立索引的文件都是txt檔案,現在有了Tika,我們就可以將pdf,word,html等檔案,通過Tika提取出文字,之後建立索引,建立索引的寫法和之前大致相似。只需要將content域對應的值做一下處理,之前是FileReader來讀取,現在是使用Tika.p

C#建立數字證書匯出為pfx,使用pfx進行非對稱加解密

我的專案當中,考慮到安全性,需要為每個客戶端分發一個數字證書,同時使用數字證書中的公私鑰來進行資料的加解密。為了完成這個安全模組,特寫了如下一個DEMO程式,該DEMO程式包含的功能有: 1:呼叫.NET2.0的MAKECERT建立含有私鑰的數字證書,並存儲到個人證書區;

Openssl應用實例:創建私有CA申請證書

linux運維一:實驗環境CA:centos6 172.17.252.226客戶端:centos7 172.17.252.188二:閱讀CA相關配置文件CA配置文件路徑:/etc/pki/tls/openssl.cnf圖一圖二圖三三:證書申請及簽署步驟1、生成申請請求2、RA核驗3、CA簽署4、獲取證書具

使用OpenSSL生成證書配置Https

兩種 做的 class 令行 .net 基本 我們 服務端 mage 1、密鑰、證書請求、證書概要說明 在證書申請簽發過程中,客戶端涉及到密鑰、證書請求、證書這幾個概念。我們以申請證書的流程說明三者的關系。客戶端(相對於CA)在申請證書的時候,大體上有三個步驟: 第一步:

Linux初級:openssl建立CA及頒發證書

openssl 對稱加密: 工具:openssl enc, gpg 演算法:3des, aes, blowfish, twofish 幫助:man enc 1、 加密:enc對稱演算法加密 -e加密 -des3演算法加密 -a base64編碼 -salt加鹽打亂順序 -in加

使用itext7簡單的生成一個pdf,建立一個pdf模板進行填充

下面這段程式碼,是顯示中文字型的關鍵程式碼。如果之前學習使用itext 2*,5*和itextasian.jar.的,為了讓這段程式碼生效一定都遇到Font 'STSongStd-Light' with 'UniGB-UCS2-H' is not recognized這個異常,查了很多資料,也試過很多方法。

在win10下安裝的linux,進行相應的配置

相信大部分同學都跟我一樣都是使用Windows系統的,但是作為一個開發者來說,Linux命令是經常要用到的,在以前我們使用虛擬機器安裝Linux的,如果電腦配置低的話,就基本卡著不動了。在Windows10後,我們再也不用那麼麻煩了,因為可以直接在Windows上安裝子系統。

Halcon建立模板進行模板匹配

在進行影象處理時,很多時候建立模板並通過匹配模板進行影象基準點的分析能大大提高ROI的選取準確度和效率。 下面通過例項來講述模板匹配的快速學習應用。 首先建立模板 先讀取影象,對讀取的影象建立模板並儲存,建立模板要挑選的是所有影象都存在的特徵或區域以保證在實際處理時

爬蟲使用mysql建立新資料庫進行增刪改查操作

 前言: 該文章描述了爬蟲爬取資料後存入資料庫自動建庫建表,有不足之處還望大家提出 import re import time from functools import reduce from io import BytesIO import pymysql

OpenSSL生成使用CA根證書籤名Keytool生成的證書請求

生成私鑰[帶密碼] [root@node00 security]# openssl genrsa [-des3] -out ca.key 2048 Generating RSA private key, 2048 bit long modulus ...............

python爬蟲建立代理池,爬取5000個代理IP進行驗證!

前面已經介紹了urllib+正則表示式和BeautifulSoup進行爬取資料的方法,今天再解決一個實際問題——構建自己的代理池。     通過爬蟲在網上進行資料的獲取,由於效率很快,換言之,訪問的速度過快,導致一段時間內的流量過大,會使得對方的伺服器壓力過

Docker實戰:使用Dockerfile建立tomcat服務支援ssh的Centos Docker映象

1、在root目錄下建立 tomcat8_jdk8 目錄 2、下載jdk8,tomcat8並解壓到 tomcat8_jdk8 目錄下 將jdk8解壓後重命名為jdk,並將裡面的src原始碼相關的檔案刪除,以減少生產映象檔案的大小。 將tomcat8解壓後重命名為to

openssl 建立證書的總結和注意事項

1.該文章從網上看了好多部落格,並經過實踐形成。環境為ubuntu12和ubuntu14 "========================================大綱提要和注意事項==========================================

Python3使用mysql建立新資料庫進行增刪改查操作

import pymysql #在資料庫中插入資料 def insertData(db, cursor): # 插入資料 sql = """INSERT INTO student (id, name, age)VALUES

OpenSSL建立CA和簽發證書,轉換成java可以載入的jks

java的keytool工具本來就可以生成互動式認證的證書, 不過其他語言處理互動式認證的流程貌似和java的keytool的認證流程有些差別,  而openssl是比較通用的工具。大部分語言都會支援openssl生成的證書檔案。用openssl簽發的證書如何才能轉化為key

Android Studio學習筆記建立新視窗(activity)進行跳轉

1,建立layout(activity_other.xml) 在src/main/res/layout滑鼠右鍵 new->LayoutResource File 然後輸入一個file name,比如:activity_other 點ok鍵完成建立 2,建