はじめに
間違ってる可能性が(ry
質問やマサカリがあれば、コメントか@miyagaw61までお願いします。
SSL/TLSの概念
秘/公: Webサーバーの秘密鍵/公開鍵
CA秘/CA公: 中間CAの秘密鍵/公開鍵
ルート公: ルートCAの公開鍵
共: Webサーバーとクライアントの共通鍵
を意味してます。
「情報」というのは「Webサーバーの情報」です。
その情報を認証局(CA)が実在するか確認し、認められた場合に証明書が発行される仕組みになっています。
共通鍵の生成方法は他にもあるらしい...?
sshで使用する鍵の作成方法
公開鍵・秘密鍵の作成
ssh-keygen -t rsa -b 4096 -C [メールアドレス]
パスを聞かれるので絶対値で指定しましょう。
この方法では、公開鍵がssh専用になります。
sshで使用しない鍵の作成方法
秘密鍵作成
openssl genrsa 2048 > [秘密鍵]
秘密鍵のDER化
PEMは内部にDERがある説?(http://bearmini.hatenablog.com/entry/2014/02/05/143510)
・パスワード無し
openssl rsa -inform PEM -outform DER -in [秘密鍵] -out [秘密鍵.der]
・パスワードあり
openssl rsa -inform PEM -outform DER -in [秘密鍵] -out [秘密鍵.der] -passin pass:[パスワード]
・失敗パターン
なぜかわかりませんが失敗しました。
openssl x509 -outform DER -in [秘密鍵] -out [秘密鍵.der]
openssl x509 -outform DER -in [秘密鍵] -out [秘密鍵.der] -passin pass:[パスワード]
TIPS:
x509とは、pemを表します。
他にも、pkcs[n]サブコマンドもあります。
公開鍵の作成
・シンプル(PEM)
openssl rsa -in [秘密鍵] -pubout -out [公開鍵]
・形式指定
openssl rsa -in [秘密鍵] -pubout -out [公開鍵] -outform [DER/NET/PEM(DEFAULT)]
・パスワード設定
openssl rsa -in [秘密鍵] -pubout -out [公開鍵] -passin pass:[パスワード]
SSL証明書(crtファイル)作成
CSRを作成するときに色々聞かれますが、何も入力せずにエンターを押すとデフォルト値が使われます。
が、Common Name(FQDN)くらいはちゃんと入力しとけという記述が多く見受けられました。
openssl req -new -key [秘密鍵] > [CSR].csr
openssl x509 -days 3650 -req -signkey [秘密鍵] < [CSR].csr > [SSL証明書].crt
p12ファイル作成
p12(pkcs12)とは、公開鍵(証明書)や秘密鍵をまとめるためのフォーマットの一つです。
openssl pkcs12 -export -in [sslサーバ証明書] -inkey [秘密鍵] -certfile [中間CA証明書] -out [p12ファイル]
-certfileオプションは付けなくてもできました(というかオプション無しでしか確認できてません)。
openssl pkcs12 -export -in [sslサーバ証明書] -inkey [秘密鍵] -out [p12ファイル]
秘密鍵だけをまとめる場合はこちら
openssl pkcs12 -export -nocerts -inkey [秘密鍵] -out [p12ファイル]
p12ファイルをDERエンコード
という記述は見つけたがサイトによってはDERではなくCERといっているところもあったり、そもそもオプション名的にderじゃなくてdesなのでは?という感じなので、信憑性は低いです。
openssl pkcs12 -in [p12ファイル] -des -out [DER形式のp12ファイル]
参考
・お前らのSSH Keysの作り方は間違っている - Qiita ( archive )
・PKCS #12 個人情報交換ファイルフォーマットについて - Qiita ( archive )
・RSA鍵、証明書のファイルフォーマットについて - Qiita ( archive )
・OpenSSLコマンドによる公開鍵暗号、電子署名の方法 - Qiita ( archive )
・SSLサーバー証明書 : 証明書ファイルの種類とopensslでの変換方法 | DigiCert ( archive )
・OpenSSL で RSA の秘密鍵を作成する方法 | WEB ARCH LABO ( archive )
・opensslコマンドtips — ありえるえりあ ( archive )
・OpenSSLコマンドの備忘録 - Qiita ( archive )
・無料でHTTPS化できる「Let's Encrypt」をやってみた ※install.sh付き - Qiita ( archive )
・クライアント証明書の作り方 | 日々雑記 ( archive )
・OpenSSLコマンドでオレオレ証明書を作り、ルート認証局としてサーバー証明書を発行する - Sanwa Systems Tech Blog ( archive )
・サーバー証明書のつくりかたと、その原理 - kirinwikiblog ( archive )
・SSL/TLSの仕組みを知っていますか? ( archive )
・【図解】よく分かるデジタル(SSL/TLS)証明書の仕組み 〜CSR、自己署名(オレオレ)証明書、ルート証明書、中間証明書の必要性や扱いについて〜 | SEの道標 ( archive )
・デジタル証明書とデジタル署名について - bambinya's blog ( archive )
・SSLサーバ証明書の中身 - Q&A - SSLOFF ( archive )
・SSLサーバ証明書の身分証明機能の信頼性 - Q&A - SSLOFF ( archive )
・理解してるつもりの SSL/TLS でも、もっと理解したら面白かった話 · けんごのお屋敷 ( archive )
・SSL/TLSの解説と選び方まとめ|ジオトラスト ( archive )
・SSL/TLS(Part.3):不正アクセスを防止するSSL/TLS(4) - @IT ( archive )
・SSL/TLS(Part.4):不正アクセスを防止するSSL/TLS(5) - @IT ( archive )
・サーバー証明書のつくりかたと、その原理 - kirinwikiblog ( archive )
・中間証明書 - f5 ( archive )
・今なぜHTTPS化なのか?インターネットの信頼性のために、技術者が知っておきたいTLSの歴史と技術背景 - エンジニアHub|若手Webエンジニアのキャリアを考える! ( archive )
・電子証明書あれこれ - Qiita ( archive )
・証明書や秘密鍵のフォーマットを変換することだけを書いた | Divide et impera ( archive )
・RSA 秘密鍵/公開鍵ファイルのフォーマット - bearmini's blog ( archive )
・Abstract Syntax Notation One - Wikipedia ( archive )
・X.690 - Wikipedia ( archive )
・オレオレ証明書をopensslで作る(詳細版) - ろば電子が詰まっている ( archive )