1. 程式人生 > >使用openssl模擬CA和CA證書的簽發

使用openssl模擬CA和CA證書的簽發

當使用ssl/tls進行加密通訊時,必須要有數字證書。若通訊只限制在區域網內,可以不向第三方機構申請簽發證書,可以通過openssl模擬CA(Certificate Authority),並通過該CA簽發證書。下文講述在Centos7.3上使用openssl工具簽發證書的具體步驟。

1 生成模擬CA

1.1 修改配置檔案/etc/pki/tls/openssl.cnf

開啟openssl的配置檔案/etc/pki/tls/openssl.cnf,修改CA機構的預設資訊,具體修改內容如下

[ req_distinguished_name ]
countryName         = Country Name (2 letter code)
countryName_default
= CN countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = JangSu localityName = Locality Name (eg, city) localityName_default = NanJing 0.organizationName = Organization Name (eg, company) 0.organizationName_default = ZTE # we can do this but it is not needed normally :-)
#1.organizationName = Second Organization Name (eg, company) #1.organizationName_default = World Wide Web Pty Ltd organizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = Tech commonName = Common Name (eg, your name or your server\'s hostname) commonName_max
= 64 emailAddress = Email Address emailAddress_max = 64

配置項說明:

  • countryName_default 預設的國家名稱簡寫,這裡配置為CN;
  • stateOrProvinceName_default,預設的省份名,這裡配置為JangS;
  • localityName_default,預設的城市名稱,這裡配置為NanJing;
  • 0.organizationName_default,預設的組織名稱,這裡配置為ZTE;
  • organizationalUnitName_default,預設的部門名稱,這裡配置為Tech;

1.2 生成CA自簽證書

生成CA的私鑰

(umask 077; openssl genrsa -out private/cakey.pem 2048)
[root@localhost CA]# pwd
/etc/pki/CA

[root@localhost CA]# (umask 077; openssl genrsa -out private/cakey.pem 2048)
Generating RSA private key, 2048 bit long modulus
.......................................................................................................+++
..........+++
e is 65537 (0x10001)

生成自簽證書

openssl req -new -x509 -key private/cakey.pem -out cacert.pem 
[[email protected] CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem 
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [JangSu]:
Locality Name (eg, city) [NanJing]:
Organization Name (eg, company) [ZTE]:
Organizational Unit Name (eg, section) [Tech]:
Common Name (eg, your name or your server's hostname) []:ca.xiaojie.com
Email Address []:[email protected]163.com

[[email protected] CA]# ls private
cacert.pem  cakey.pem
  • cakey.pem為CA的私鑰;
  • cacert.pem為CA的自簽證書;

檢視簽發證書中的內容

openssl x509 -text -in cacert.pem 
[root@localhost CA]# openssl x509 -text -in cacert.pem 
Certificate:
Data:
    Version: 3 (0x2)
    Serial Number: 13441978108521887108 (0xba8b7fdefd063584)
Signature Algorithm: sha256WithRSAEncryption
    Issuer: C=CN, ST=JS, L=NanJing, O=ZTE, OU=Tech, CN=ca.xiaojie.com/emailAddress=caxiaojie@163.com
    Validity
        Not Before: Jun  2 03:30:22 2018 GMT
        Not After : Jun  2 03:30:22 2019 GMT
    Subject: C=CN, ST=JS, L=NanJing, O=Ztesoft, OU=Tech, CN=ca.xiaojie.com/emailAddress=caxiaojie@163.com
    Subject Public Key Info:
        Public Key Algorithm: rsaEncryption
            Public-Key: (1024 bit)
            Modulus:
                00:d2:ce:94:8e:26:52:bd:6e:7d:54:31:02:20:57:
                01:81:1b:fc:24:3b:b1:e8:f1:4c:5d:e2:49:d8:5f:
                5c:5e:02:89:76:29:f5:8d:33:17:98:06:80:06:ee:
                37:dd:87:47:0d:f1:56:f0:cb:5e:5a:30:dc:31:46:
                5a:cb:74:4c:76:8c:58:0b:bd:85:ff:15:16:67:64:
                99:dd:53:3b:d0:6b:23:e3:35:3d:56:4a:ea:5d:89:
                ab:f3:dc:75:ee:b6:5e:71:c6:f9:f6:ae:53:72:ba:
                41:b4:06:0d:4f:80:1c:83:ab:5b:68:4f:78:eb:aa:
                c0:f2:af:c4:b5:ac:f2:e8:f5
            Exponent: 65537 (0x10001)
    X509v3 extensions:
        X509v3 Subject Key Identifier: 
            3E:E1:CC:F3:0D:53:2C:E3:DC:42:16:1D:DF:7B:A6:64:0F:E7:85:0B
        X509v3 Authority Key Identifier: 
            keyid:3E:E1:CC:F3:0D:53:2C:E3:DC:42:16:1D:DF:7B:A6:64:0F:E7:85:0B

        X509v3 Basic Constraints: 
            CA:TRUE
Signature Algorithm: sha256WithRSAEncryption
     be:5a:44:22:98:bb:cc:8a:15:32:ef:7c:ef:cb:2d:0f:6e:95:
     42:f4:1f:54:23:40:02:63:7e:52:e3:97:2d:e2:77:fb:20:3b:
     b3:b4:9f:b5:d7:01:05:5f:c2:9d:a9:2d:e8:93:48:33:ed:4c:
     8a:3c:e2:a0:f1:d3:9e:b0:37:af:4a:75:aa:4a:42:3c:4e:a6:
     c7:07:dc:98:75:84:3a:fe:8a:65:ab:4b:39:29:02:57:5b:30:
     eb:1f:26:13:cc:65:39:65:83:47:cc:e6:da:89:9d:61:3c:57:
     65:66:1d:c6:06:cb:b5:da:ae:4c:22:d0:f0:4d:ed:4c:4e:f9:
     ea:d8

建立公共目錄

[root@localhost CA]# mkdir certs  crl  newcerts  private
[root@localhost CA]# touch index.txt
[root@localhost CA]# touch serial
[root@localhost CA]# echo 01 > serial
[root@localhost CA]# ls
certs  crl  index.txt  newcerts  private  serial
  • private,CA的私鑰;
  • newcerts, 儲存CA新簽發的證書;
  • crl , 被吊銷的證書列表;
  • index.txt,儲存簽發的證書資訊;
  • serial,儲存證書籤發的序列號;

2. 機構A請求CA簽發證書

生成機構A的私鑰

(umask 077; openssl genrsa -out httpd.key 1024)

生成證書籤發請求

openssl req -new -key httpd.key -out httpd.csr
[[email protected] ssl]# openssl req -new -key httpd.key -out httpd.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [JangSu]:
Locality Name (eg, city) [NanJing]:
Organization Name (eg, company) [ZTE]:
Organizational Unit Name (eg, section) [Tech]:
Common Name (eg, your name or your server's hostname) []:www.xiaojie.com
Email Address []:[email protected]123.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[[email protected] ssl]# ls
httpd.csr  httpd.key

將httpd.csr傳送給CA,CA根據httpd.csr簽發證書

openssl ca -in httpd.csr -out httpd.crt -days 365
  • -in,指定證書籤發請求檔案;
  • -out, 指定生成的證書檔案;
  • -days, 指定證書的有效期;
[root@localhost ssl]# openssl ca -in httpd.csr -out httpd.crt -days 365
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Jun  2 04:07:48 2018 GMT
            Not After : Jun  2 04:07:48 2019 GMT
        Subject:
            countryName               = CN
            stateOrProvinceName       = JangSu
            organizationName          = Ztesoft
            organizationalUnitName    = Tech
            commonName                = www.xiaojie.com
            emailAddress              = xiaojie@123.com
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                3F:8F:5F:80:F1:C4:77:0A:2E:4D:9C:75:16:FC:8B:6E:77:EF:6A:35
            X509v3 Authority Key Identifier: 
                keyid:75:D5:93:C0:53:3F:B1:DE:90:E0:9A:CC:92:BE:EF:F0:38:F4:20:C8

Certificate is to be certified until Jun  2 04:07:48 2019 GMT (365 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

httpd.crt 就是簽發的證書,可以直接使用httpd.crt證書了。

3. 在httpd中使用證書

安裝mod_ssl模組

yum install mod_ssl

配置/etc/httpd/conf.d/ssl.conf

  • 修改DocumentRoot ,DocumentRoot “/work/www/html”【網站的目錄】;
  • 修改ServerName, ServerName www.YOUR_DOMAIN:443【域名+443埠】;
  • 配置SSLCertificateFile ,即CA證書檔案httpd.crt,SSLCertificateFile /etc/ssl/certs/httpd.crt;
  • 配置SSLCertificateKeyFile, 即私鑰檔案httpd.key, SSLCertificateKeyFile /etc/ssl/private/httpd.key;
  • 配置 SSLCertificateChainFile,證書信任鏈,也就是根證書, 這裡配置的就是CA的證書。SSLCertificateChainFile /etc/ssl/certs/cacert.pem;

參考

相關推薦

使用openssl模擬CACA證書簽發

當使用ssl/tls進行加密通訊時,必須要有數字證書。若通訊只限制在區域網內,可以不向第三方機構申請簽發證書,可以通過openssl模擬CA(Certificate Authority),並通過該CA簽發證書。下文講述在Centos7.3上使用openssl工具

創建CA 申請證書

cacentos6中一. 創建私有CA 1 、創建所需要的文件touch /etc/pki/CA/index.txt 生成證書索引數據庫文件echo 01 > /etc/pki/CA/serial 指定第一個頒發證書的序列號2、 CA 自簽證書生成私鑰cd /etc/pki/CA/ (umask 06

Centos7建立CA申請證書 轉自https://www.cnblogs.com/mingzhang/p/8949541.html

Centos7.3建立CA和申請證書 openssl 的配置檔案:/etc/pki/tls/openssl.cnf 重要引數配置路徑 dir   = /etc/pki/CA          &

Centos7創建CA申請證書 轉自https://www.cnblogs.com/mingzhang/p/8949541.html

tro 簽名證書 文件名 相同 執行 檢驗 vat http The Centos7.3創建CA和申請證書 openssl 的配置文件:/etc/pki/tls/openssl.cnf 重要參數配置路徑 dir = /etc/pki/CA

Linux建立私有CA頒發證書及管理

name 工具 index country 證書管理 text tex 簽名證書 簽名 建立私有CA和頒發證書及管理 1. 建立私有CA 使用openssl工具實現搭建一個私有CA,打開文件/etc/pki/tls/openssl.cnf ,文件裏的內容是openssl

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

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

linux安全加密篇(三)—openssl工具CA證書

OpenSSL:開源專案 三個元件: openssl: 多用途的命令列工具,包openssl libcrypto: 加密演算法庫,包openssl-libs [[email protected] data]# openssl-libs libssl:加密模組

使用openssl生成自籤CA證書,並用其簽發其他證書

下面開始實踐: ROOT CA金鑰和證書 正常情況下,根CA一般只用來簽發下級的CA證書,不會直接簽發服務端和客戶端證書。 1.準備工作目錄 我這裡用的是mac環境,使用win或linux的朋友請自行調整。 建立一個資料夾用來存放所

基於 OpenSSL 自建 CA 頒發 SSL 證書

原文地址 https://deepzz.com/post/based-on-openssl-privateCA-issuer-cert.html#toc_5自建 CA 頒發證書不僅可以用來鑑權,而且使你的通訊更加的安全(請保護好你的證書)。在實際的軟體開發中,越來越多的服務用到 HTTPS,證書的需求隨之增加

基於OpenSSL自建CA頒發SSL證書

openssl是一個開源程式的套件、這個套件有三個部分組成:一是libcryto,這是一個具有通用功能的加密庫,裡面實現了眾多的加密庫;二是libssl,這個是實現ssl機制的,它是用於實現TLS/SSL的功能;三是openssl,是個多功能命令列工具,它可以實現加密解密,甚至還可以當CA來用,可以讓你建立證

Weblogic HTTPS SSL證書製作(自己使用openssl來製作CA證書伺服器證書,自己充當CA的角色)

一、生成CA證書1、建立私鑰openssl genrsa -out /home/ca/ca-key.pem 10242、建立證書請求openssl req -new -out /home/ca/ca-req.csr -key /home/ca-key.pem3、自簽名證書1

CA證書籤署過程、openssl模擬生成證書檔案、使用者證書驗證過程

//單純使用公私鑰進行加解密,會存在公鑰被替換偽造的風險,無法判斷公鑰是否屬於服務提供商。 //所以,公鑰需要通過CA機構的認證。 //CA機構用自己的私鑰,對服務提供商的相關資訊及公鑰進行加密生成數字證書。 //在進行安全連線的時候,服務提供商將證書一同發給使用者。 //使用者收到證書後,從他的CA認證

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、獲取證書具

CA證書

linux1、概念PKI: Public Key Infrastructure簽證機構:CA(CertificateAuthority)註冊機構:RA證書吊銷列表:CRL證書存取庫:X.509:定義了證書的結構以及認證協議標準版本號 主體公鑰序列號 CRL分發點簽名算法

安全與加密-SSL交互與握手過程 創建CA證書管理

ror 描述 sin code oss shadow pro back 自簽名證書 上一篇章中我們講了使用gpg和openssl加密公鑰進行安全數據通訊的場景。可是,網絡中總是有不懷好意的角色存在,別以為你以公鑰加密了就是安全的,有沒有想過,你得到的這個公鑰是不是真正要跟你

Centos7下的OpensslCA

tap 需要 密文 rtb nmf 密碼 cux next sse 一、Openssl常用命令:# openssl ? # 查看openssl的命令及子命令 # man enc # 可以直接查看子命令幫助加密:# openssl enc -des3 -e -sa

私有CA證書

傳輸 same ica ca簽署 .cn 數字證書 struct stat 派出所 證書類型 證書授權機構的證書 服務器 用戶證書 獲取證書兩種方法 使用證書授權機構: 生成簽名請求(csr ) 將csr發送給

利用openssl創建私有CA的步驟過程

創建私有CAopenssl命令行 工具:命令包含眾多的子命令來實現各種安全加密功能 標準命令有: enc, dgst, ca, req, genrsa, rand, rsa, x509, passwd, ... 1.對稱加密命令:enc 提供對

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

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

docker筆記6-使用tsl方式連線dockerCA證書的安裝使用

記錄使用tsl連線docker, CA證書的安裝使用 生成安裝證書 參照原文連結:https://segmentfault.com/a/1190000012510820  auto-tls-certs.sh Bash 指令碼程式碼 #!/bin/bash # # Crea