成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

OpenSSL精粹:SSL證書、私鑰和CSR

系統 Linux
OpenSSL 是一個多功能的命令行工具,可以用于與公鑰基礎設施(PKI)和 HTTPS(HTTP over TLS)相關的大量任務。這本小抄風格的指南提供了 OpenSSL 命令的快速參考,這些命令在常見的日常場景中非常有用。

[[329274]]

OpenSSL 是一個多功能的命令行工具,可以用于與公鑰基礎設施Public Key Infrastructure(PKI)和 HTTPS(HTTP over TLS)相關的大量任務。這本小抄風格的指南提供了 OpenSSL 命令的快速參考,這些命令在常見的日常場景中非常有用。這包括生成私鑰、證書簽署請求certificate signing request(CSR)和證書格式轉換的 OpenSSL 示例,但它并沒有涵蓋 OpenSSL 的所有用途。

如何使用本指南

  • 如果你不熟悉證書簽署請求(CSR),請閱讀第一部分。
  • 除了第一部分,本指南采用了簡單的小抄格式:自帶了命令行代碼片段。
  • 跳到與你準備完成的任務相關的任何部分。
  • 大多數命令都是單行的,為了清晰起見,已經擴展到多行(使用 \ 符號)。

關于證書簽署請求(CSR)

如果你想從證書頒發機構certificate authority(CA)那里獲得 SSL 證書,你必須生成一個證書簽署請求certificate signing request(CSR)。一個 CSR 主要是由一個密鑰對的公鑰和一些附加信息組成。當證書被簽署時,這兩部分都會被插入到證書中。

每當你生成一個 CSR 時,你會被提示提供有關證書的信息。這些信息被稱為區分名稱Distinguised Name(DN)。DN 中的一個重要字段是通用名稱Common Name(CN),它應該是你打算使用證書的主機的完全合格域名Fully Qualified Domain Name(FQDN)。當創建 CSR 時,也可以通過命令行或文件傳遞信息來跳過交互式提示。

DN 中的其他項目提供了有關你的業務或組織的附加信息。如果你是從證書機構購買 SSL 證書,通常要求這些附加字段(如“組織Organization”)準確地反映你的組織的詳細信息。

下面是一個 CSR 信息提示的例子:

  1. ---
  2. Country Name (2 letter code) [AU]:US
  3. State or Province Name (full name) [Some-State]:New York
  4. Locality Name (eg, city) []:Brooklyn
  5. Organization Name (eg, company) [Internet Widgits Pty Ltd]:Example Brooklyn Company
  6. Organizational Unit Name (eg, section) []:Technology Division
  7. Common Name (e.g. server FQDN or YOUR name) []:examplebrooklyn.com
  8. Email Address []:

如果你想非交互式地回答 CSR 信息提示,你可以通過在任何請求 CSR 信息的 OpenSSL 命令中添加 -subj 選項來實現。這里是該選項的一個例子,使用上面代碼塊中顯示的相同信息:

  1. -subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=examplebrooklyn.com"

現在你已經了解了 CSR,可以自由跳轉到本指南中涵蓋你的 OpenSSL 需求的任何一節。

生成 CSR

本節介紹了與生成 CSR(以及私鑰,如果它們還不存在的話)有關的 OpenSSL 命令。CSR 可以用來向證書頒發機構請求 SSL 證書。

請記住,你可以通過上一節中提到的 -subj 選項非交互式地添加 CSR 信息。

生成一個私鑰和一個 CSR

如果你想使用 HTTPS(HTTP over TLS)來保護你的 Apache HTTP 或 Nginx Web 服務器的安全,并且你想使用一個證書頒發機構(CA)來頒發 SSL 證書,那么就使用這個方法。生成的 CSR 可以發送給 CA,請求簽發由 CA 簽名的 SSL 證書。如果你的 CA 支持 SHA-2,請添加 -sha256 選項,用 SHA-2 簽署 CSR。

這條命令從頭開始創建一個 2048 位的私鑰(domain.key)和一個 CSR(domain.csr):

  1. openssl req \
  2. -newkey rsa:2048 -nodes -keyout domain.key \
  3. -out domain.csr

回答 CSR 信息提問,完成該過程。

選項 -newkey rsa:2048 指定密鑰應該是 2048 位,使用 RSA 算法生成。選項 -nodes 指定私鑰沒有用密碼加密。這里沒有包含 -new 選項,而是隱含在其中,表示正在生成一個 CSR。

從現有的私鑰中生成一個 CSR

如果你已經有了私鑰,并想用它向 CA 申請證書,請使用這個方法。

該命令基于現有的私鑰(domain.key)創建一個新的 CSR(domain.csr):

  1. openssl req \
  2. -key domain.key \
  3. -new -out domain.csr

回答 CSR 信息提問,完成該過程。

選項 -key 指定一個現有的私鑰(domain.key),它將被用來生成一個新的 CSR。選項 -new 表示正在生成一個 CSR。

從現有的證書和私鑰生成 CSR

如果你想更新現有的證書,但由于某些原因,你或你的 CA 沒有原始的 CSR,請使用這個方法。基本上可以省去重新輸入 CSR 信息的麻煩,因為它是從現有證書中提取信息的。

該命令基于現有的證書(domain.crt)和私鑰(domain.key)創建一個新的 CSR(domain.csr):

  1. openssl x509 \
  2. -in domain.crt \
  3. -signkey domain.key \
  4. -x509toreq -out domain.csr

選項 -x509toreq 指定你使用一個 X509 證書來制作 CSR。

生成 SSL 證書

如果你想使用 SSL 證書來確保服務的安全,但你不需要 CA 簽名的證書,一個有效的(和免費的)解決方案是簽署你自己的證書。

你可以自己簽發的一種常見證書是自簽證書self-signed certificate。自簽證書是用自己的私鑰簽署的證書。自簽證書和 CA 簽名證書一樣可以用來加密數據,但是你的用戶會顯示一個警告,說這個證書不被他們的計算機或瀏覽器信任。因此,只有當你不需要向用戶證明你的服務身份時,才可以使用自簽名證書(例如非生產或非公開服務器)。

本節介紹與生成自簽名證書相關的 OpenSSL 命令。

生成自簽證書

如果你想使用 HTTPS(HTTP over TLS)來保護你的 Apache HTTP 或 Nginx Web 服務器,并且你不需要你的證書由 CA 簽名,那么就使用這個方法。

這個命令可以從頭開始創建一個 2048 位的私鑰(domain.key)和一個自簽證書(domain.crt):

  1. openssl req \
  2. -newkey rsa:2048 -nodes -keyout domain.key \
  3. -x509 -days 365 -out domain.crt

回答 CSR 信息提問,完成該過程。

選項 -x509 告訴 req 子命令創建一個自簽名的證書。-days 365 選項指定證書的有效期為 365 天。它會生成一個臨時的 CSR,以收集與證書相關的信息。

從現有私鑰生成自簽名證書

如果你已經有了一個私鑰,并且你想用它來生成一個自簽證書,請使用這個方法。

這條命令可以從現有的私鑰(domain.key)中創建一個自簽證書(domain.crt):

  1. openssl req \
  2. -key domain.key \
  3. -new \
  4. -x509 -days 365 -out domain.crt

回答 CSR 信息提問,完成該過程。

選項 -x509 告訴 req 子命令創建一個自簽證書。-days 365 選項指定證書的有效期為 365 天。選項 -new 啟用 CSR 信息提問。

從現有的私鑰和 CSR 生成自簽證書

如果你已經有了私鑰和 CSR,并且你想用它們生成一個自簽證書,請使用這個方法。

這條命令將從現有的私鑰(domain.key)和(domain.csr)中創建一個自簽證書(domain.crt)。

  1. openssl x509 \
  2. -signkey domain.key \
  3. -in domain.csr \
  4. -req -days 365 -out domain.crt

選項 -days 365 指定證書的有效期為 365 天。

查看證書

證書和 CSR 文件是以 PEM 格式編碼的,不適合被人讀取。

本節介紹的 OpenSSL 命令將輸出 PEM 編碼文件的實際條目。

查看 CSR 條目

該命令允許你查看和驗證純文本的 CSR(domain.csr)的內容:

  1. openssl req \
    -text -noout -verify \
    -in domain.csr

查看證書條目

該命令允許你查看純文本證書(domain.crt)的內容:

  1. openssl x509 \
    -text -noout \
    -in domain.crt

驗證證書由 CA 簽署

使用此命令驗證證書(domain.crt)是否由特定的 CA 證書(ca.crt)簽署:

  1. openssl verify \
    -verbose -CAFile ca.crt \
    domain.crt

私鑰

本節介紹了用于創建和驗證私鑰的 OpenSSL 命令。

創建私鑰

使用該命令創建一個受密碼保護的 2048 位私鑰(domain.key):

  1. openssl genrsa \
    -des3 -out domain.key 2048

在提示時輸入密碼以完成該過程。

驗證私鑰

使用此命令檢查私鑰(domain.key)是否為有效密鑰:

  1. openssl rsa \
    -check -in domain.key

如果你的私鑰已經加密,系統會提示你輸入它的密碼,成功后,未加密的密鑰會在終端上輸出。

驗證私鑰是否與證書和 CSR 匹配

使用這些命令來驗證私鑰(domain.key)是否匹配證書(domain.crt)和 CSR(domain.csr):

  1. openssl rsa -noout -modulus -in domain.key | openssl md5
  2. openssl x509 -noout -modulus -in domain.crt | openssl md5
  3. openssl req -noout -modulus -in domain.csr | openssl md5

如果每條命令的輸出都是相同的,那么私鑰、證書和 CSR 就極有可能是相關的。

加密私鑰

這需要一個未加密的私鑰(unencrypted.key),并輸出它的加密版本(encrypted.key):

  1. openssl rsa -des3 \
  2. -in unencrypted.key \
  3. -out encrypted.key

輸入你所需的密碼,以加密私鑰。

解密私鑰

這需要一個加密的私鑰(encrypted.key),并輸出一個解密的版本(decrypted.key):

  1. openssl rsa \
  2. -in encrypted.key \
  3. -out decrypted.key

在提示時,輸入加密密鑰的密碼。

轉換證書格式

我們一直在使用的所有證書都是 ASCII 碼 PEM 編碼的 X.509 證書。還有很多其他的證書編碼和容器類型;一些應用程序喜歡某些格式而不是其他格式。此外,這些格式中的許多格式可以在一個文件中包含多個項目,如私鑰、證書和 CA 證書。

OpenSSL 可以用來將證書在則西格式間轉換。本節將介紹一些可能的轉換。

將 PEM 轉換為 DER

如果要將 PEM 編碼的證書(domain.crt)轉換為 DER 編碼的證書(domain.der),即二進制格式,請使用此命令:

  1. openssl x509 \
  2. -in domain.crt \
  3. -outform der -out domain.der

DER 格式通常與 Java 一起使用。

將 DER 轉換為 PEM

如果要將 DER 編碼的證書(domain.der)轉換為 PEM 編碼的證書(domain.crt),請使用此命令:

  1. openssl x509 \
  2. -inform der -in domain.der \
  3. -out domain.crt

將 PEM 轉換為 PKCS7

如果你想把 PEM 證書(domain.crtca-chain.crt)添加到 PKCS7 文件(domain.p7b)中,請使用該命令:

  1. openssl crl2pkcs7 -nocrl \
  2. -certfile domain.crt \
  3. -certfile ca-chain.crt \
  4. -out domain.p7b

請注意,你可以使用一個或多個 -certfile 選項來指定要添加到 PKCS7 文件中的證書。

PKCS7 文件,也被稱為 P7B,通常用于 Java Keystores 和 Microsoft IIS(Windows)。它們是 ASCII 文件,可以包含證書和 CA 證書。

將 PKCS7 轉換為 PEM

如果你想將 PKCS7 文件(domain.p7b)轉換為 PEM 文件,請使用該命令:

  1. openssl pkcs7 \
  2. -in domain.p7b \
  3. -print_certs -out domain.crt

請注意,如果你的 PKCS7 文件中有多個項目(如證書和 CA 中間證書),創建的 PEM 文件將包含其中的所有項目。

將 PEM 轉換為 PKCS12

如果你想使用私鑰(domain.key)和證書(domain.crt),并將它們組合成一個 PKCS12 文件(domain.pfx),請使用這個命令:

  1. openssl pkcs12 \
  2. -inkey domain.key \
  3. -in domain.crt \
  4. -export -out domain.pfx

系統會提示你輸入導出密碼,你可以留空。請注意,在這種情況下,你可以通過將多個證書連接到一個 PEM 文件(domain.crt)中來添加一個證書鏈到 PKCS12 文件中。

PKCS12 文件,也被稱為 PFX 文件,通常用于在 Micrsoft IIS(Windows)中導入和導出證書鏈。

將 PKCS12 轉換為 PEM

如果你想轉換 PKCS12 文件(domain.pfx)并將其轉換為 PEM 格式(domain.combined.crt),請使用此命令:

  1. openssl pkcs12 \
  2. -in domain.pfx \
  3. -nodes -out domain.combined.crt

請注意,如果你的 PKCS12 文件中有多個項目(如證書和私鑰),創建的 PEM 文件將包含其中的所有項目。

OpenSSL 版本

openssl version 命令可以用來檢查你正在運行的版本。你正在運行的 OpenSSL 版本,以及編譯時使用的選項會影響到你可以使用的功能(有時也會影響到命令行選項)。

下面的命令顯示了你正在運行的 OpenSSL 版本,以及它被編譯時的所有選項:

  1. openssl version -a

本指南是使用具有如下細節的 OpenSSL 二進制文件編寫的(參見前面命令的輸出):

  1. OpenSSL 1.0.1f 6 Jan 2014
  2. built on: Mon Apr 7 21:22:23 UTC 2014
  3. platform: debian-amd64
  4. options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)
  5. compiler: cc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
  6. OPENSSLDIR: "/usr/lib/ssl"

總結

這應該涵蓋了大多數人如何使用 OpenSSL 來處理 SSL 證書的情況!它還有很多其他的用途,在這里沒有介紹,所以請在評論中隨時詢問或建議其他用途。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2016-09-06 21:55:10

LinuxOpenSSLiOS

2023-03-15 10:38:55

2021-03-31 11:29:12

OpenSSLDoS證書驗證漏洞

2010-12-16 13:59:52

OpenSSL

2009-08-14 13:34:21

SSL證書 EV SSL在線交易

2021-03-29 12:57:31

漏洞OpenSSLDos

2021-05-27 05:24:50

SSL證書https

2010-12-02 10:05:24

2013-08-29 09:51:33

SSL證書SSL證書管理

2009-08-14 15:12:37

SSL證書安全案例

2020-12-31 08:08:23

SSL證書企業

2020-06-22 07:51:24

SSL證書數據安全數據泄露

2014-11-19 16:35:01

思科

2021-05-23 12:18:06

私鑰SSL數據安全

2021-06-18 09:41:55

SSL證書數據安全數據泄露

2009-08-26 22:21:12

2009-10-28 10:20:10

2009-08-14 13:27:43

2016-10-18 10:23:14

Docker容器SSL證書

2009-08-14 15:00:47

SSL證書 天威誠信VeriSign證書
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产黑丝av | 碰碰视频 | 欧美激情综合网 | 精品国产一区二区三区四区在线 | 在线一区二区三区 | 亚洲精品美女 | 玩丰满女领导对白露脸hd | 亚洲欧洲精品一区 | 亚洲国产一区二区三区 | 九九热国产精品视频 | 黑色丝袜三级在线播放 | 91精品久久久久久久久 | 国产乱码精品1区2区3区 | 国产一区二区三区亚洲 | 99视频在线| 91麻豆产精品久久久久久 | 暖暖日本在线视频 | 国产精品高潮呻吟久久av黑人 | 九久久| 国产精品自拍视频 | 免费看大片bbbb欧美 | 国产精品久久久久久一区二区三区 | 新91 | 欧美在线视频网 | 中文字幕av一区 | 欧美炮房 | 国产黄色精品 | 黄色网毛片 | 免费观看www7722午夜电影 | 999久久久免费精品国产 | 亚洲国产精品99久久久久久久久 | 欧美一级片久久 | caoporn免费| 91视频网 | 91精品入口蜜桃 | 九九激情视频 | 99精品99| 中文字幕av网站 | 亚洲精品在线免费观看视频 | 国产精品揄拍一区二区 | 日韩欧美一区在线 |