openssl
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
openssl [2020/12/13 12:22] – nullpon | openssl [2024/07/15 10:20] (現在) – nullpon | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== | + | < |
+ | # OpenSSL | ||
- | ===== TLS ===== | + | ## 鍵ペアを作成 |
- | 使用可能な暗号スイートを表示 | + | TLSのサーバ鍵やデジタル署名鍵として使用できる鍵ペアを作成する |
- | <code sh> | + | ``` |
+ | # rsa 2048bit 鍵を作る | ||
+ | openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits: | ||
+ | |||
+ | # 別の作り方 | ||
+ | openssl genrsa -out server_key.pem 2048 | ||
+ | |||
+ | # ecdsaの鍵を作る | ||
+ | openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve: | ||
+ | |||
+ | # 別の作り方 | ||
+ | openssl ecparam -genkey -name prime256v1 -out server_key.pem | ||
+ | ``` | ||
+ | |||
+ | `-aes256`等のパラメータを追加すると鍵を暗号化できる | ||
+ | |||
+ | |||
+ | ### 鍵の確認 | ||
+ | |||
+ | ``` | ||
+ | openssl pkey -in server_key.pem -noout -text | ||
+ | ``` | ||
+ | |||
+ | |||
+ | ## TLS | ||
+ | |||
+ | ### 使用可能な暗号スイートを表示 | ||
+ | |||
+ | ``` | ||
# 全て | # 全て | ||
openssl ciphers -v | openssl ciphers -v | ||
行 14: | 行 43: | ||
# 暗号スイートを指定して表示(これはnginx 1.17のデフォルトの暗号スイート指定) | # 暗号スイートを指定して表示(これはnginx 1.17のデフォルトの暗号スイート指定) | ||
openssl ciphers -v ' | openssl ciphers -v ' | ||
- | </ | + | ``` |
- | ===== 署名と検証 ===== | + | ### CSRの作成 |
- | ECDSA鍵を使って署名の作成と検証する | + | 作成 |
- | 使用可能な楕円曲線一覧 | + | ``` |
+ | openssl req -new -key server_key.pem -out server_csr.pem | ||
+ | ``` | ||
- | openssl ecparam -list_curves | + | 確認 |
+ | ``` | ||
+ | openssl req -in server_csr.pem -noout -text | ||
+ | ``` | ||
+ | |||
+ | ## 署名と検証 | ||
+ | |||
+ | ECDSA鍵を使って署名の作成と検証する例 | ||
+ | |||
+ | ### 使用可能な楕円曲線一覧 | ||
+ | |||
+ | ``` | ||
+ | openssl ecparam -list_curves | ||
+ | ``` | ||
秘密鍵と公開鍵を作成(ここではP-256曲線=prime256v1を使う) | 秘密鍵と公開鍵を作成(ここではP-256曲線=prime256v1を使う) | ||
- | | + | ``` |
+ | openssl ecparam -name prime256v1 -genkey -out ec.key | ||
+ | ``` | ||
公開鍵をとりだす | 公開鍵をとりだす | ||
- | | + | ``` |
+ | openssl ec -pubout -in ec.key -out ec.pub | ||
+ | ``` | ||
hoge.txtファイルの署名を作成(対象のファイルは一番後ろに書く) | hoge.txtファイルの署名を作成(対象のファイルは一番後ろに書く) | ||
- | | + | ``` |
+ | openssl dgst -sign ec.key -sha256 -out hoge.txt.sig hoge.txt | ||
+ | ``` | ||
hoge.txtの署名を検証(検証対象のファイルは一番後ろに書く) | hoge.txtの署名を検証(検証対象のファイルは一番後ろに書く) | ||
- | | + | ``` |
+ | openssl dgst -verify ec.pub -sha256 -signature hoge.txt.sig hoge.txt | ||
+ | ``` | ||
Verified OKと出力されればOK | Verified OKと出力されればOK | ||
行 45: | 行 97: | ||
↑で生成した鍵を使って署名・検証するRubyのサンプルコード | ↑で生成した鍵を使って署名・検証するRubyのサンプルコード | ||
- | < | + | ```ruby |
require ' | require ' | ||
行 56: | 行 108: | ||
puts pub_key.verify(' | puts pub_key.verify(' | ||
puts pub_key.verify(' | puts pub_key.verify(' | ||
- | </code> | + | ``` |
+ | |||
+ | </markdown> | ||
===== 楕円曲線 ===== | ===== 楕円曲線 ===== | ||
- | 楕円曲線とは'' | + | 楕円曲線とは'' |
電子署名でよく使われる楕円曲線は以下の3つ(nistはアメリカ国立標準技術研究所) | 電子署名でよく使われる楕円曲線は以下の3つ(nistはアメリカ国立標準技術研究所) | ||
^nist推奨^openssl^ | ^nist推奨^openssl^ | ||
- | |P-256|prime256v1| | + | |P-256|prime256v1 |
|P-384|secp384r1| | |P-384|secp384r1| | ||
|P-521|secp521r1| | |P-521|secp521r1| |
openssl.1607862135.txt.gz · 最終更新: 2020/12/13 12:22 by nullpon