SSL/CA 証明書および関連する証明書ファイル (pem、crt、cer、key、csr)

デジタル証明書はオンライン世界における ID カードであり、双方間の安全な通信のための電子認証を提供します。デジタル証明書には鍵ペアの所有者の識別情報が含まれており、証明書所有者の身元は識別情報の信頼性を検証することによって認証されます。デジタル証明書は、オンライン世界で面識のないユーザー間で安全で信頼できる信頼関係を確立できますが、この信頼関係の確立は PKI/CA 認証センターを起点として行われるため、安全な PKI/CA を構築することが重要です。認証センターです。

ppyyJUJ.jpg

電子証明書に関連するさまざまな概念や技術を総称して PKI (Public Key Infrastructure) と呼びます。PKI は、CA、デジタル証明書、LDAP、CRL、OCSP などのテクノロジーを導入し、対応する標準を策定することにより、公開キーとユーザー マッピングの関係、集中型のサービス パフォーマンスのボトルネック、オフライン ステータスのクエリなどの問題を効果的に解決します。同時に、証明書申請の標準化を促進し改善するために、証明書申請に関連する多くの標準が策定されています。

PKI の中心となるのは、クライアント、サーバー、および認証局 (CA) の間に確立される信頼です。この信頼は、証明書の生成、交換、検証を通じて確立され、伝播されます。

次の図は、認証と証明の違い (2 者と 3 者間の違い) を示しています。

pp6WTAK.md.png

概要

SSL 証明書は、運転免許証、パスポート、営業許可証の電子コピーに似たデジタル証明書の一種です。サーバー上で設定されるため、サーバー証明書とも呼ばれます。

SSL 証明書が Web サーバーに正しくインストールされている場合にのみ、クライアントとサーバー間の https 通信を実現できます。各種Webサーバーの構成が必要となるため、証明書発行後、実際のサーバー環境に合わせて証明書をインストールする必要があります。

CA は、電子商取引認証局であり、電子商取引認証センターとしても知られています。デジタル証明書の発行と管理を担当する権威ある組織です。電子商取引における信頼できる第三者として、公的証明書の合法性に対して責任を負います。公開鍵システムの鍵 性別検査の責任。発行される証明書は CA 証明書です。

SSL証明書とCA証明書の関係は、次の2つの観点から考えることができます。

CA 証明書には SSL 証明書が含まれています

CA 組織は、SSL 証明書の発行に加えて、コード署名証明書や電子メール証明書などの他のデジタル証明書も発行できます。この観点から見ると、SSL 証明書は CA 証明書です。

CA 証明書は SSL 証明書と同等です

英語で CA と呼ばれる認証局は、証明書の発行、無効化、保存を担当します。CA によって発行された証明書は CA 証明書と呼ばれます。CA 証明書の本質は、SSL/TLS プロトコルを使用して証明書を保護することです。送信データのセキュリティを保護するため、SSL 証明書とも呼ばれます。

SSL/TSLとは何ですか

SSL(セキュアソケットレイヤー、セキュアソケットレイヤー)

信頼性の高い接続指向のネットワーク層プロトコルとアプリケーション層プロトコルの間に位置するプロトコル層。SSL は、相互認証し、デジタル署名を使用して整合性を確保し、暗号化を使用してプライバシーを確​​保することにより、クライアントとサーバー間の安全な通信を可能にします。このプロトコルは、SSL レコード プロトコルと SSL ハンドシェイク プロトコルの 2 つの層で構成されます。

TLS (トランスポート層セキュリティ、トランスポート層セキュリティプロトコル)

2 つのアプリケーション間の機密性とデータの整合性を提供するために使用されます。このプロトコルは、TLS レコード プロトコルと TLS ハンドシェイク プロトコルの 2 つの層で構成されます。

二人の関係

TLSとSSLでは接続処理に違いはなく、SSLはTLSの前世、TLSはSSLの現世であると理解できます。また、TLS と SSL の 2 つのプロトコル (レコード プロトコルとハンドシェイク プロトコル) は同じように機能します。

ただし、SSL と TLS で使用されるアルゴリズムは異なり、TLS では多くの新しいアラーム コードが追加されます。これらの違いのため、TLS は SSL の互換性のない拡張バージョンであると考えることができます。証明書を認証するとき、TLS は TLS と証明書を交換する必要があり、SSL は SSL と証明書を交換する必要があります。

証明書の発行

証明書の形式

分類基準の観点から見ると、SSL 証明書の形式には主に次のものがあります。

  • 公開鍵証明書形式標準 X.509 で定義された PEM および DER
  • 公開鍵暗号化規格 PKCS で定義された PKCS#7 および PKCS#12
  • Java環境用JKS

ファイル形式に関しては、主な SSL 証明書形式は次のとおりです。

  1. 1 つは Base64 (ASCII) でエンコードされたテキスト形式です。この種類の証明書ファイルは、テキスト エディタで開いたり編集したりすることができ、一般的な PEM 証明書形式には、PEM、CRT、KEY などの拡張子があります。
  2. もう 1 つは Binary バイナリ ファイルです。一般的な DER 証明書形式には、DER や CER などの拡張子があります。

Linux システムは CRT を使用し、Windows システムは CER を使用します。

名詞 意味
X.509 証明書所有者の公開鍵、暗号化アルゴリズム、その他の情報を含む共通の証明書形式
pkcs1 ~pkcs12 公開キー暗号化 (非対称暗号化) の標準 (公開キー暗号化標準)。通常は.pN、 .p12 として保存され、証明書とキーを含むカプセル化形式です。
*.the 証明書のバイナリ保存形式 (一般的には使用されません)
*.pem 証明書またはキーの Base64 テキスト保存形式。証明書またはキーは、個別に保存することも、同時に保存することもできます。
*。鍵 pem 形式のキーは個別に保存され、通常は *.key として保存されます。
*.cer *.crt どちらも証明書を指し、Linux では crt、Windows では cer と呼ばれ、保存形式は pem または der になります。
*.csr 証明書署名リクエスト (証明書署名リクエスト) には、国、電子メール、ドメイン名などの証明書所有者に関する情報が含まれます。
*.pfx Microsoft IISの実装
*.jks Java の keytool によって実装された証明書形式
発行の流れ

pp64iOs.png

CA の秘密キーを生成します (サフィックスは .pem または .key です)。

openssl genrsa -out ca.key 2048

CA 証明書要求ファイルを生成し、会議後に一連の基本情報を要求します。

openssl req -new -key ca.key -out ca.csr

証明書の生成 (公開キーは証明書に含まれています) 通常の状況では、証明書の申請と発行のために、秘密キーと要求ファイルを認定 CA 組織に提出する必要があります。ここでは、openssl を使用して CA 機関をシミュレートして証明書を発行することを選択します。

openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

上記の 3 つの手順を完了すると、フォルダーに 3 つのファイルが作成されます。

ca.key
ca.csr
ca.crt

生成された証明書ファイルは、その後の証明書信頼チェーンの議論に役立つルート証明書と見なすことができます。

生成される証明書の形式は通常、ユニバーサル X509 形式であり、証明書所有者の公開キー、暗号化アルゴリズム、その他の情報が含まれます。

X.509証明書

X.509 V3 標準に基づく証明書は、デジタル情報の暗号化、署名、復号化に使用できる電子キーのペアに ID をバインドすることで、認証とデータ セキュリティ (一貫性、機密性) を保証します。

各 X.509 証明書は、公開キーと秘密キーで構成されるキー ペアに基づいて構築されており、暗号化と復号化、ID 検証、および情報セキュリティの確認に使用できます。証明書の形式と検証方法は、通常、X.509 国際標準に従います。

X.509 標準は、Abstract Syntax Notation One (ASN.1) と呼ばれるインターフェイス記述言語を使用して、クライアントと証明機関の間で送信される証明書要求および証明書を定義、エンコード、デコードします。

以下は、ASN.1 を使用した証明書表現の構文です。

SignedContent ::= SEQUENCE 
{certificate         CertificateToBeSigned,algorithm           Object Identifier,signature           BITSTRING
}CertificateToBeSigned ::= SEQUENCE 
{version                 [0] CertificateVersion DEFAULT v1,serialNumber            CertificateSerialNumber,signature               AlgorithmIdentifier,issuer                  Namevalidity                Validity,subject                 NamesubjectPublicKeyInfo    SubjectPublicKeyInfo,issuerUniqueIdentifier  [1] IMPLICIT UniqueIdentifier OPTIONAL,subjectUniqueIdentifier [2] IMPLICIT UniqueIdentifier OPTIONAL,extensions              [3] Extensions OPTIONAL
}

公開キーと秘密キーは両方とも、乱数の長い文字列で構成されます。公開キーは公開されており、その長さによって保護の強度が決まりますが、情報は公開キーを使用して暗号化されます。秘密鍵は受信者にのみ秘密裏に保管され、受信者は公開鍵に関連付けられた秘密鍵を使用して情報を復号して読み取ることができます。

openssl を使用して公開キー証明書をテキスト モードで表示します。openssl x509 -in ca.crt -noout -text 次の図がその主な内容です。

ppcbLN9.md.png

証明書には、申請者の公開鍵、申請者の組織情報および個人情報、発行局 CA の情報、有効期限、証明書のシリアル番号の平文およびその他の情報が含まれており、署名も含まれています。

証明書操作の一般的な操作は次のとおりです。

# 查看证书序列号
openssl x509 -in ca.crt -noout -serial
# 打印证书名称以 RFC2253 规定的格式打印出证书的拥有者名字
openssl x509 -in ca.crt -noout -subject
# 打印出证书的 MD5 特征参数
openssl x509 -in ca.crt -noout -fingerprint
# 打印出证书的 SHA 特征参数
openssl x509 -sha1 -in ca.crt -noout -fingerprint
フォーマット変換

証明書形式の変換は、実際には、der や pem の変換などのエンコード形式の変換です。

PEM から DER 形式:

openssl x509 -inform pem -in certificate.pem -outform der -out certificate.der

DER から PEM 形式:

openssl x509 -inform der -in certificate.der -outform pem -out certificate.pem
重要

注 1: 証明書 = 公開鍵 + 申請者および発行者の情報 + 署名。

注 2: 証明書ファイルのサフィックスは、証明書がどのエンコーディングであるかを判断するための基準として使用できません。秘密鍵/公開鍵のファイル拡張子には、key/crt が使用される場合と、pem が使用される場合がありますが、実際にはこれは重要ではなく、ファイル内のコンテンツ形式が重要です。

発行とトラストチェーン

トラストチェーン

CA システムはツリー構造になっており、各 CA は 1 つ以上のサブ CA を持つことができ、最上位の CA はルート CA と呼ばれます。ルート CA に加えて、他の CA 証明書の発行者も上位 CA です。この階層関係は信頼チェーンを形成します。

pp6W2p4.png

baidu などの実際の例では、証明書を表示すると、そのルートが GlobalSign、中間証明書が Validation CA-SHA256-G2、最後に baidu.com であることがわかります。

pp6WfXR.jpg

証明書は 2 つのタイプに分類されます (本質的な違いはありません)。

  • CA証明書
  • エンドエンティティ証明書: CA 証明書を受け入れるエンドエンティティ。
認証例

新しい証明書を発行するには、上記で生成した ca.crt をルート証明書として使用します。

証明書の秘密キーを生成する

openssl genrsa -out server.key 1024

証明書要求ファイルを生成する

openssl req -new -key server.key -out server.csr

または、openssl を CA 機関としてシミュレートし、上記で生成された ca.crt ルート証明書を使用して新しい証明書を発行します。

openssl x509 -req -days 3000 -sha1 -extensions v3_req -CA ca.crt -CAkey ca.key -CAserial ca.srl -CAcreateserial -in server.csr -out server.crt
  • -CA: CA 証明書へのパスを指定します。
  • -CAkey: CA 証明書の秘密キーのパスを指定します。
  • -CAserial: 証明書のシリアル番号ファイルへのパスを指定します。
  • -CAcreateserial: 証明書のシリアル番号ファイル (上記のシリアル ファイル) の作成を示します。作成されるシリアル番号ファイルのデフォルト名は -CA で、指定した証明書名に .srl 接尾辞が追加されます。

証明書の検証では、次のコマンドを使用して、発行が成功したかどうかを確認します。

openssl verify -CAfile ca.crt server.crt
# server.crt: OK

参考資料

[1] SSL 証明書と CA 証明書の違い https://baijiahao.baidu.com/s?id=1653402538679672349&wfr=spider&for=pc
[2] SSL と TSL の違いと関係、および HTTPS が https を暗号化および復号化する方法: / /www.cnblogs.com/hanzhengjie/p/13920581.html
[3] ssl と tsl の違い https://blog.csdn.net/M_0307/article/details/73543591
[4] CA 証明書リテラシー、https の説明https://www.cnblogs.com/handsomeBoys/p/6556336.html
[5] PKI/CA とデジタル証明書 https://blog.csdn.net/u013066292/article/details/79538069
[6] 違いは何ですかSSL 証明書形式の間で? https://www.gworg.com/problems/1194.html
[7] .pem を .crt および .key に変換するにはどうすればよいですか? https://vimsky.com/article/3608.html
[8] ツール: pem 形式の証明書の詳細を表示する openssl https://blog.csdn.net/du_lijun/article/details/115367633
[9] http シリーズ - OpenSSL が生成ルート証明書 CA とサブ証明書の発行 https://blog.csdn.net/lipviolet/article/details/109456104
[10] CA 証明書の詳しい説明 https://zhuanlan.zhihu.com/p/267047441
[11] Let's Encrypt 入門 https://www.jianshu.com/p/449047437697
[12] Kubernetes 証明書管理シリーズ (1) ) https://mp.weixin.qq.com/s?__biz=MzI2ODAwMzUwNA==&mid=2649298078&idx=1&sn=24d17a25ccf1c97337e0ed7bc951a8a2&chksm=f2eb8541c59c0c576b3dbbc0fc32bbb087 495
5a6a83d852b8aa6f35685220d1eb8a135253b47&token=972017317&lang=zh_CN&scene=21#wechat_redirect [13] CA デジタル証明書の概要 https:// zhuanlan.zhihu.com /p/413401722
[14] SSL では、公開キー、秘密キー、証明書のサフィックス (pem、crt、cer、key、c​​sr) は何ですか? https://blog.csdn.net/HD243608836/article/details/127441701

おすすめ

転載: blog.csdn.net/weixin_44388689/article/details/132500070