OpenSSL自簽發配置有多域名或ip地址的證書
環境
翻譯加實踐
概述
HTTPS服務是工作在SSL/TLS上的HTTP。
首先簡單區分一下HTTPS,SSL ,TLS ,OpenSSL這四者的關係:
- SSL:(Secure Socket Layer,安全套接字層)是在客戶端和伺服器之間建立一條SSL安全通道的安全協議;
- TLS:(Transport Layer Security,傳輸層安全協議),用於兩個應用程式之間提供保密性和資料完整性;
- TLS的前身是SSL;
- OpenSSL是TLS/SSL協議的開源實現,提供開發庫和命令列程式;
- HTTPS是HTTP的加密版,底層使用的加密協議是TLS。
結論:SSL/TLS 是協議,OpenSSL是協議的程式碼實現。
用OpenSSL配置帶有SubjectAltName的ssl請求
對於多域名,只需要一個證書就可以保護非常多的域名。
SubjectAltName
是X509 Version 3 (RFC 2459)
的擴充套件,允許ssl
證書指定多個可以匹配的名稱。
SubjectAltName
可以包含email 地址,ip地址,正則匹配DNS
主機名,等等。
ssl
這樣的一個特性叫做:SubjectAlternativeName
(簡稱:san
)
生成證書請求檔案
對於一個通用的ssl
證書請求檔案(CSR
),openssl
不需要很多操作。
因為我們可能需要新增一個或者兩個SAN
到我們CSR
,我們需要在openssl
openssl
建立一個包含x509 V3
擴充套件的CSR
,並且你也需要告訴openssl
在你的CSR
中包含subject alternative names
列表。
建立一個openssl
配置檔案(openssl.cnf
),並啟用subject alternative names
:
找到req
段落。這段落的內容將會告訴openssl
如何去處理證書請求(CSR
)。
在req
段落中應該要包含一個以req_extensions
開始的行。如下:
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
這個配置是告訴openssl
在CSR
中要包含v3_req
段落的部分。
現在我們來配置v3_req
,如下:
[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = US
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = MN
localityName = Locality Name (eg, city)
localityName_default = Minneapolis
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = Domain Control Validated
commonName = Internet Widgits Ltd
commonName_max = 64
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = kb.example.com
DNS.2 = helpdesk.example.org
DNS.3 = systems.example.net
IP.1 = 192.168.1.1
IP.2 = 192.168.69.14
請注意:無論v3_req
放哪裡,都是可以的,都會在所有生成的CSR
中。
要是之後,你又想生成一個不同的SANs
的CSR
檔案,你需要編輯這個配置檔案,並改變DNS.x
列表。
生成私鑰
首先我們建立一個私鑰:
openssl genrsa -out san_domain_com.key 2048
# 如果是生成ca的使用,建議這樣
openssl genrsa -out ca.key 2048
這裡的san_domain_com
,是你正式使用的伺服器的全稱地址,這不是必須的,也就是說,你可以隨便取名字;但是按照這個格式去,會更清晰點。
建立CSR檔案
執行下面語句:
openssl req -new -out san_domain_com.csr -key san_domain_com.key -config openssl.cnf
# 注意這裡指定了openssl.cnf,使用了上面我們建立的,因為預設是沒有`san`。
# 如果之前建立的是ca.key
openssl req -new -out ca.csr -key c.key -confaig openssl.cnf
執行後,系統會提示你要你輸入組織資訊
,並詢問你是否想要包含密碼(你可以不需要)。接著你將會看到san_domain_com.csr
被建立。
檢查我們是否建立好了,我們可以使用下面的命令來檢視CSR
包含的資訊:
openssl req -text -noout -in san_domain_com.csr
# 如果是ca.csr
openssl req -text -noout -in ca.csr
你將會看到類似如下的資訊:
Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=US, ST=Texas, L=Fort Worth, O=My Company, OU=My Department, CN=server.example
Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (2048 bit)
Modulus (2048 bit): blahblahblah
Exponent: 65537 (0x10001)
Attributes:
Requested Extensions: X509v3
Basic Constraints: CA:FALSE
X509v3 Key Usage: Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Alternative Name: DNS:kb.example.com, DNS:helpdesk.example.com
Signature Algorithm: sha1WithRSAEncryption
blahblahblah
好了現在我們有了一個新的CSR
,接著我們需要對它進行簽署。
自簽名並建立證書
openssl x509 -req -days 3650 -in san_domain_com.csr -signkey san_domain_com.key
-out san_domain_com.crt-extensions v3_req -extfile openssl.cnf
# 如果是ca.csr
openssl x509 -req -days 3650 -in ca.csr -signkey ca.key
-out ca.crt-extensions v3_req -extfile openssl.cnf
說明下:上面的證書 有效期是3650天。
至此就建立完畢。
以下是我自己擴充套件:
上面只是把ca
證書給生成出來了,但是如何利用生成的ca
來簽名客戶端的證書呢?
建立客戶端私鑰
openssl genrsa -out client.key 1024
這和上面是一樣的,就是名稱改下;
建立證書請求檔案CSR
openssl req -new -key client.key -out client.csr -config openssl.cnf -extensions v3_req
利用ca.crt來簽署client.csr
openssl x509 -req -sha256 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in client.csr -out client.crt
# 或者 把v3.ext 改為 openssl.cnf
openssl x509 -req -sha256 -extfile openssl.cnf -CA ca.crt -CAkey ca.key -CAcreateserial -in client.csr -out client.crt
說明:
①sha256
是雜湊演算法
②v3.ext
是要自己建立的
v3.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage=digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName[email protected]_names
[alt_names]
DNS.1=www.test.com
IP.1 = 192.168.1.1
至此就生成出了,客戶端的證書。
同理伺服器端證書是一樣的。
檔案數量:
ca: ca.key、ca.csr、ca.crt
client: client.key、client.csr 、 client.crt
以下是我自己實際執行的語句:
# 生成ca
openssl genrsa -out ca.key 1024
openssl req -new -key ca.key -out ca.csr -config openssl.cnf -extensions v3_req
openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt -extfile openssl.cnf -extensions v3_req
# 生成client
openssl genrsa -out client.key 1024
openssl req -new -key client.key -out client.csr -config openssl.cnf -extensions v3_req
openssl x509 -req -sha256 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in client.csr -out client.crt
可以用來檢視簽發的證書的詳細資訊
openssl x509 -text -noout -in client.crt
可以用來檢視該 CA 下所有已撤消證書的 詳細資訊
openssl crl -in crl.pem -noout -text
參考地址:
相關推薦
OpenSSL自簽發配置有多域名或ip地址的證書
環境 翻譯加實踐 概述 HTTPS服務是工作在SSL/TLS上的HTTP。 首先簡單區分一下HTTPS,SSL ,TLS ,OpenSSL這四者的關係: SSL:(Secure Socket Layer,安全套接字層)是在客戶端和伺服器之間建立一
Tomcat域名或IP地址訪問方式配置方法
1、配置www.***.com域名方式訪問 在Tomcat下面配置域名(如:www.***.com)的時候,同時又不希望客戶通過我們網站的IP或者域名訪問到Tomcat預設的ROOT,配製方法如下: 1、開啟Tomcat安裝目錄下的/conf/server.xml檔案
IIS 之 IIS 7及以上多域名或端口綁定同一物理目錄並設置不同默認文檔
clas host doc ebs dex 導致 color 不同 amp 今天在 IIS 7 多端口或域名綁定同一物理目錄,設置不同的默認文檔遇到問題:同一物理目錄的多個站點修改任意一個站點默認文檔都會一起更改。 原因:在同一個物理目錄下只有一個 web.conf
centos7 lamp環境配置及多域名設定
預設安裝後 apache 也就是httpd 配置檔案在 /etc/httpd/conf 目錄 預設php 安裝目錄在/etc/php.ini 下邊是我配置好後的httpd.conf # # This is the main Apache HTTP
openssl 自簽發證書及ssl 原理簡介(一)
提綱: 1、使用openssl自簽發證書 2、配置apache 3、配置客戶端 4、使用自簽發證書訪問apache 一、使用Openssl自簽發證書 首先裝openssl 。編輯配置檔案/etc/ssl/openssl.conf ,配置TSA root dir 等以下配置
並行請求多個域名的IP地址
python/gevent以下示例顯示如何同時運行任務。 import gevent from gevent import socket urls = [‘www.baidu.com‘, ‘www.sina.com‘, ‘www.sohu.com‘] jobs = [gevent.spawn(socket.g
支持多域名的免費SSL證書
配置教程 自動配置 blog logs cer tps nbsp lan https 知乎網友稱其支持多域名: https://www.zhihu.com/question/19578422 配置教程: https://www.cnblogs.com/duanweish
nginx代理雙域名,同一個IP地址的伺服器實現兩個域名配置
作業系統環境:win2003Server 安裝軟體:Nginx 環境:安裝兩個tomcat服務,一個為9001埠、一個為9002埠,nginx預設為80埠 #目的:實現一個80埠,兩個域名同時可以訪問,nginx作為代理接收80埠的資料,轉發到後端的tomcat服務處理 1
LEDE配置DHCP按順序分配ip地址
LEDELEDE配置DHCP按順序分配ip地址
Linux下配置CentOS7網路設定 獲取ip地址
1、檢視ip地址 ip addr 2、編輯網絡卡配置檔案 cd /etc/sysconfig/network-scripts vi /ifcfg-ens33 &n
ubuntu 通過修改 /etc/hosts 強制捆綁域名和IP地址
通過修改 /etc/hosts 強制捆綁域名和IP地址 下面通過將 abc.com 的IP指定為 127.0.0.1 為例: 一、開啟 /etc/hosts 檔案,在其中新增如下一行: 127.0.0.1 abc.com 儲存退出
使用飛豬動態IP修改器修改夜神安卓多開模擬器IP地址圖文教程
很多玩家一因為想上多個賬戶但是被限制使用了夜神多開模擬器,但是還是無法登入多個賬戶或者無法正常組隊等等問題,那是因為多開了但是模擬器 IP地址是一樣的問題造成的!所以今天教大家如何在模擬器上修改模擬器地址,讓每個多開的模擬器中地址都不一樣! 第一,安裝夜神多開模擬器。 第二, 多開的模
域名和IP地址是一回事嗎?建網站要買域名還要買IP地址嗎?
去年我在網通花了150元買了一個域名,他們在登記單上的域名費一欄填了150元,登記單上還有IP使用費一欄他們什麼也沒有填寫,如果域名與IP地址是同一個專案,是一回事,他們不是在重複收費嗎? 不是一回事,ip地址通常指定的是伺服器,也就是主機,建立網站需要域名和主機的。 購買域名和主機之後,域名需
CentOS 7.x網路配置,設定自動獲取IP地址
檢視網路配置資訊 使用以下命令檢視網格配置資訊: ip addr 為什麼不是ifconfig呢?因為它已經在新版的CentOS中被優化掉啦!如果有需要,可以用以下命令將其召喚回來,但前提是你得先能連上網啊,哈哈! yum install net-tools -y 示例
CentOS 7.x網路配置,手工設定靜態IP地址
修改模式 BOOTPROTO=static 設定IP地址 IPADDR=192.168.1.101 GATEWAY=192.168.1.1 BROADCAST=192.168.1.255 NETMASK=255.255.255.0 DNS1=192.168.1.1 重啟生
網址(url),域名,ip地址,dns,hosts之間的關係
什麼是ip? 我們知道,在Internet上有千百萬臺主機,為了區分這些主機,人們給每臺主機都分配了一個專門的地址,稱為IP地址。通過IP地址就可以訪問到每一臺主機。 IP地址由4部分數字組成,每部分都不大於256,各部分之間用小數點分開。例如“百度搜索”主機的IP地址就
Linux學習筆記(10)linux網路管理與配置之一——主機名與IP地址
Linux學習筆記(10)linux網路管理與配置之一——主機名與IP地址 大綱目錄 0.常用linux基礎網路命令 1.配置主機名 2.配置網絡卡資訊與IP地址 3.配置DNS客戶端 4.配置名稱解析順序 5.配置路由與預設閘道器 6.雙網絡卡繫結 1.配置主機名 1.1
域名與IP地址的聯絡與區別
(轉載自一個好朋友的部落格連結,略有修改,共同學習,共同進步!) 我們也知道每一臺機都有一個唯一ip地址, 特別難記,所以出現了今天的DNS(域名) 當我們的計算機想要和一個遠端機器連線時,我們可以申請連線該機器ip地址下的DNS,例如:www.baidu.com。
(2)如何配置Linux系統的網路IP地址---學習筆記
CentOS 7系統為例為大家介紹整個網路配置的過程。 一臺安裝了Linux系統的電腦如果想要聯網,首先要做的就是進行網路配置。 首先注意,路由閘道器處必須設定可以配置靜態IP或者使用指定IP繫結MAC才可以配置,否則配置不成功,不要盲目的配置. 再次以根使用者登入系統,
模擬DNS查詢域名的IP地址
一直搞不明白,通過域名訪問網頁的時候計算機是在什麼時候進行域名的解析,最近通過閱讀《網路是怎樣連線的》得到了答案, 下面就是我的簡單理解和實驗,僅供參考: 瀏覽器在根據HTTP協議生成HTTP請求訊息之後,會將URL中的域名傳送給你電腦上的DNS解析器(DNS客戶端),呼叫解析器後,解析