1. 程式人生 > >自建CA認證和證書

自建CA認證和證書

openssl

一些概念:

PKI:Public Key Infrastructure

  • 簽證機構:CA(Certificate Authority)
  • 註冊機構:RA(Register Authority)
  • 證書吊銷列表:CRL(Certificate Revoke Lists)
  • 證書存取庫

X.509:定義了證書的結構和認證協議的標準。包括版本號、序列號、簽名演算法、頒發者、有效期限、主體名稱、主體公鑰、CRL分發點、擴充套件資訊、發行者簽名等

獲取證書的兩種方法:

  • 使用證書授權機構
  • 生成簽名請求(csr)
  • 將csr傳送給CA
  • 從CA處接收簽名
  • 自簽名的證書
  • 自已簽發自己的公鑰重點介紹一下自建CA頒發機構和自簽名。

自建CA頒發機構和自簽名

實驗用兩臺伺服器,一臺做ca頒發證書,一臺去請求籤名證書。

證書申請及簽署步驟:

  1. 生成申請請求
  2. CA核驗
  3. CA簽署
  4. 獲取證書

我們先看一下openssl的配置檔案:/etc/pki/tls/openssl.cnf

####################################################################
[ ca ]
default_ca  = CA_default        # The default ca section(預設的CA配置,是CA_default,下面第一個小節就是)
####################################################################
[ CA_default ] dir = /etc/pki/CA # Where everything is kept (dir變數) certs = $dir/certs # Where the issued certs are kept(認證證書目錄) crl_dir = $dir/crl # Where the issued crl are kept(登出證書目錄) database = $dir/index.txt # database index file.(資料庫索引檔案) new_certs_dir = $dir/newcerts # default place for new certs.(新證書的預設位置)
certificate = $dir/cacert.pem # The CA certificate(CA機構證書) serial = $dir/serial # The current serial number(當前序號,預設為空,可以指定從01開始) crlnumber = $dir/crlnumber # the current crl number(下一個吊銷證書序號) # must be commented out to leave a V1 CRL crl = $dir/crl.pem # The current CRL(下一個吊銷證書) private_key = $dir/private/cakey.pem# The private key(CA機構的私鑰) RANDFILE = $dir/private/.rand # private random number file(隨機數檔案) x509_extensions = usr_cert # The extentions to add to the cert # Comment out the following two lines for the "traditional" # (and highly broken) format. name_opt = ca_default # Subject Name options(被頒發者,訂閱者選項) cert_opt = ca_default # Certificate field options(認證欄位引數) # Extension copying option: use with caution. # copy_extensions = copy # Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs # so this is commented out by default to leave a V1 CRL. # crlnumber must also be commented out to leave a V1 CRL. # crl_extensions = crl_ext default_days = 365 # how long to certify for (預設的有效期天數是365) default_crl_days= 30 # how long before next CRL default_md = sha256 # use SHA-256 by default preserve = no # keep passed DN ordering # A few difference way of specifying how similar the request should look # For type CA, the listed attributes must be the same, and the optional # and supplied fields are just that :-) policy = policy_match # 是否匹配規則 # For the CA policy [ policy_match ] countryName = match # 國家名是否匹配,match為匹配 stateOrProvinceName = match # 州或省名是否需要匹配 organizationName = match # 組織名是否需要匹配 organizationalUnitName = optional # 組織的部門名字是否需要匹配 commonName = supplied # 註釋 emailAddress = optional # 郵箱地址 # For the 'anything' policy # At this point in time, you must list all acceptable 'object' # types. [ policy_anything ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional ####################################################################

重點關注下面的幾個引數:

dir             = /etc/pki/CA           # Where everything is kept (dir變數)
certs           = $dir/certs            # Where the issued certs are kept(認證證書目錄)
database        = $dir/index.txt        # database index file.(資料庫索引檔案)
new_certs_dir   = $dir/newcerts         # default place for new certs.(新證書的預設位置)
certificate     = $dir/cacert.pem       # The CA certificate(CA機構證書)
serial          = $dir/serial           # The current serial number(當前序號,預設為空,可以指定從01開始)
private_key     = $dir/private/cakey.pem# The private key(CA機構的私鑰)

1、建立所需要的檔案

touch /etc/pki/CA/index.txt生成證書索引資料庫檔案

echo 01 > /etc/pki/CA/serial指定第一個頒發證書的序列號,16進位制數,比如可以從1a開始,一般從01開始。

2、CA自簽證書

在作為CA的伺服器上操作:

  • 生成私鑰
[[email protected] ~]#(umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
Generating RSA private key, 4096 bit long modulus
.....++
..............................................++
  • 生成自簽名證書

    [[email protected] ~]#openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/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.
    <hr />
    
    Country Name (2 letter code) [XX]:CN (國名(2個字母程式碼)[XX]:CN)
    State or Province Name (full name) []:Beijing (州或省名稱(全稱)北京)
    Locality Name (eg, city) [Default City]:Beijing (地區名稱(如城市)[預設城市]:北京)
    Organization Name (eg, company) [Default Company Ltd]:shangdigongsi (組織名稱(如公司):上帝公司)
    Organizational Unit Name (eg, section) []:opt (組織單位名稱:opt)
    Common Name (eg, your name or your server's hostname) []:centos (通用名稱(例如,您的名字或您的伺服器的主機名)[]:centos)
    Email Address []:[email protected] (電子郵件地址[]:[email protected]

    引數解析:

    -new: 生成新證書籤署請求
    -x509: 專用於CA生成自簽證書
    -key: 生成請求時用到的私鑰檔案
    -days n:證書的有效期限
    -out /PATH/TO/SOMECERTFILE: 證書的儲存路徑

    3、頒發證書

  • 在需要使用證書的主機生成證書請求。(比如給一臺作為部落格web服務的伺服器生成私鑰)

    [[email protected] ~]#(umask 066; openssl genrsa -out /etc/pki/tls/private/blog.key 4096)
    Generating RSA private key, 4096 bit long modulus
    .....................................++
    ......................................................................................................................++
    e is 65537 (0x10001)
  • 生成證書申請檔案

[[email protected] ~]#openssl req -new -key /etc/pki/tls/private/blog.key -days 3560 -out /etc/pki/tls/blog.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) [XX]:CN (國名(2個字母程式碼)[XX]:CN)
State or Province Name (full name) []:Beijing(州或省名稱(全稱)北京)
Locality Name (eg, city) [Default City]:Bejing (地區名稱(如城市)[預設城市]:北京)
Organization Name (eg, company) [Default Company Ltd]:shangdigongsi(組織名稱(如公司):上帝公司)
Organizational Unit Name (eg, section) []:centos(組織單位名稱:opt)
Common Name (eg, your name or your server's hostname) []:opt (通用名稱(例如,您的名字或您的伺服器的主機名)[]:centos)
Email Address []:(電子郵件地址[]:[email protected])

Please enter the following 'extra' attributes (請輸入以下“額外”屬性)
to be sent with your certificate request(要傳送您的證書請求)
A challenge password []:(密碼[ ]:)
An optional company name []:(可選的公司名稱)

 - CA簽署證書,並將證書頒發給請求者
<center><img src="http://zhangqifei.top/picture/ifeier/data/ca.jpg" width = "500" height = "200" alt="openssl" align=center /></center>

> 注意:預設國家,省,公司名稱三項必須和CA一致

 - 把blog.crt證書回傳給申請者,申請者可以使用此證書。

> 證書可以放在網站裡,比如tomacat服務有專門存放證書的地方,還有可能需要轉化格式,此處使用方法暫略

### 4、吊銷證書
 - 在客戶端獲取要吊銷的證書的serial
```bash
openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject




<div class="se-preview-section-delimiter"></div>
  • 在CA上,根據客戶提交的serial與subject資訊,對比檢驗是否與index.txt檔案中的資訊一致,吊銷證書:
openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem




<div class="se-preview-section-delimiter"></div>
  • 指定第一個吊銷證書的編號
echo 01 > /etc/pki/CA/crlnumber




<div class="se-preview-section-delimiter"></div>

注意:這裡只有在第一次更新證書吊銷列表前,才需要執行指定編號。

  • 更新證書吊銷列表
openssl ca -gencrl -out /etc/pki/CA/crl/crl.pem




<div class="se-preview-section-delimiter"></div>
  • 檢視crl檔案:
openssl crl -in /etc/pki/CA/crl/crl.pem -noout -text

相關推薦

CA認證證書

一些概念: PKI:Public Key Infrastructure 簽證機構:CA(Certificate Authority) 註冊機構:RA(Register Authority) 證書吊銷列表:CRL(Certificate Revoke L

CA認證證書

ca認證獲取證書的兩種方法: 使用證書授權機構 生成簽名請求(csr) 將csr發送給CA 從CA處接收簽名 自簽名證書 自己簽發自己的公鑰自建CA頒發機構和自簽名實驗用兩臺機器,一臺做CA

OpenSSL CA及簽發證書

利用 OpenSSL 建立 CA 及自行簽發證書。 1. 建立CA目錄結構 在CA的配置檔案中,有說明預設CA的目錄。 建立預設CA下的目錄及檔案如下圖(.old檔案和.attr檔案是簽發證書後自動生成的檔案)。 其中, newcert

CA與簽發證書

CA 簡介 在加密中,證書頒發機構或證書頒發機構(CA)是頒發數字證書的實體。數字證書通過證書的指定主題來證明公鑰的所有權。這允許其他人(依賴方)依賴簽名或關於與經認證的公鑰對應的私鑰的斷言。CA充當受信任的第三方 -由證書的主體(所有者)和依賴證書的一

opensslCA及生成證書

檢視openssl版本 openssl version 使用openssl加密和解密檔案 加密檔案 opnessl有一個子命令enc,他可以用來加密檔案,具體引數如下: -ciphername:指定加密演算法 -in fil

Https、OpenSSLCA證書及簽發證書、nginx單向認證、雙向認證及使用Java訪問

1.5 image echo create etc 保存 config openss ima 0.環境 安裝了nginx,安裝了openssl 1.配置和腳本 先創建一個demo目錄(位置自己選擇,我選擇建在nginx的目錄下): mkdir /etc/nginx/

基於 OpenSSL CA 頒發 SSL 證書

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

基於OpenSSLCA頒發SSL證書

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

(13) openssl ca(簽署CA)

多選 bject 自建 stat ddr new eba 不重復 重新 用於簽署證書請求、生成吊銷列表CRL以及維護已頒發證書列表和這些證書狀態的數據庫。因為一般人無需管理crl,所以本文只介紹openssl ca關於證書管理方面的功能。 證書請求文件使用CA的私鑰簽署之後

CA 中心並簽發 CA 證書

目錄 文章目錄 目錄 CA 認證原理淺析 基本概念 PKI CA 認證中心(證書籤發) X.509 標準 證書 證書的簽發過程 自建 CA 簽發證書並認證 HT

CA 頒發證書

原文地址: http://blog.csdn.net/erice_e/article/details/53486071 客戶端認證伺服器: 正規的做法是:到國際知名的證書頒發機構,如VeriSign申請一本伺服器證書,比如支付寶的首頁,點選小鎖的圖示,可以看到支付

信安實踐——CA證書搭建https伺服器

1.理論知識https簡介HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。超文字傳輸協

部署CA頒發證書實現https加密

isp pan ef6 span med _for logs strong 執行 理論忽略:百度上很多 需求:自建證書並實現域名的https加密 部署: 在linux機器上執行以下命令生成私鑰 mkdir -p /opt/ssl-cert cd /opt/ssl

CA證書搭建https伺服器

由於CA收費,所以可以自建CA,通過將CA匯入瀏覽器實現https的效果,曾經12306購票就需要自行匯入網站證書。 關於https 2015年阿里巴巴將旗下淘寶、天貓(包括移動客戶端)全站啟用HTTPS加密,並順利通過“雙十一”考驗,成為全球最大的電商平臺全站HTTPS改造案例。 全站HTTPS需要解決3大

帶有認證功能的Docker Harbor

域名 mas tab com 求和 port 簡單的 help github What is Harbor? Harbor is an open source cloud native registry that stores, signs, and scans co

使用OpenSSLCA + Nginx配置HTTPS

ble not cer per see 當前目錄 認證 ner web Ubuntu 16.04(ECS),OpenSSL 1.0.2g 1 Mar 2016,Nginx 1.10.3 (Ubuntu), 瀏覽器:Chrome 67,Firefox 61,Edge 40,

CA實驗

openssl 證書頒發 ... crt pki attr .com 詳細 gen 測試主機:172.20.112.128(centos6.9:c6) 172.20.112.162(CA,centos7:c7)[root@c7 ~]# vi /etc/pki/tls/o

參考大神教程完成阿里雲伺服器esp8266mqtt客戶端成功對接

阿里雲自建伺服器esp8266和mqtt客戶端成功對接 阿里雲伺服器部分參考esp8266嵌入式大神資料:大神部落格 最近組建了一個小群,感興趣的可以加入一起玩:476840321 微控制器也是很簡單的,用的esp8266最小系統。 過程中間遇到了

雲合同線上電子簽章:怎麼做CA認證線上電子印章?

CA,Certificate Authority,電子商務認證授權機構,也稱為電子商務認證中心,是負責發放和管理數字證書的權威機構,並作為電子商務交易中受信任的第三方,承擔公鑰體系中公鑰的合法性檢驗的責任。 CA中心為每個使用公開金鑰

Windows Server2008、IIS7啟用CA認證證書製作完整過程

1新增活動目錄證書服務 1.1開啟伺服器管理器,右鍵點選角色,選擇“新增角色”,在“新增角色嚮導”視窗左側面板選擇“伺服器角色”,然後勾選“Active Directory證書服務”,如下圖:   1