内容へ移動
Cat Paw Software
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
openssl
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
<markdown> # OpenSSL ## 鍵ペアを作成 TLSのサーバ鍵やデジタル署名鍵として使用できる鍵ペアを作成する ``` # rsa 2048bit 鍵を作る openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out server_key.pem # 別の作り方 openssl genrsa -out server_key.pem 2048 # ecdsaの鍵を作る openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:prime256v1 -out server_key.pem # 別の作り方 openssl ecparam -genkey -name prime256v1 -out server_key.pem ``` `-aes256`等のパラメータを追加すると鍵を暗号化できる ### 鍵の確認 ``` openssl pkey -in server_key.pem -noout -text ``` ## TLS ### 使用可能な暗号スイートを表示 ``` # 全て openssl ciphers -v # TLS 1.3で使用可能な暗号スイートを表示 openssl ciphers -v TLSv1.3 # 暗号スイートを指定して表示(これはnginx 1.17のデフォルトの暗号スイート指定) openssl ciphers -v 'HIGH:!aNULL:!MD5' ``` ### CSRの作成 作成 ``` openssl req -new -key server_key.pem -out server_csr.pem ``` 確認 ``` openssl req -in server_csr.pem -noout -text ``` ## 署名と検証 ECDSA鍵を使って署名の作成と検証する例 ### 使用可能な楕円曲線一覧 ``` openssl ecparam -list_curves ``` 秘密鍵と公開鍵を作成(ここではP-256曲線=prime256v1を使う) ``` openssl ecparam -name prime256v1 -genkey -out ec.key ``` 公開鍵をとりだす ``` openssl ec -pubout -in ec.key -out ec.pub ``` hoge.txtファイルの署名を作成(対象のファイルは一番後ろに書く) ``` openssl dgst -sign ec.key -sha256 -out hoge.txt.sig hoge.txt ``` hoge.txtの署名を検証(検証対象のファイルは一番後ろに書く) ``` openssl dgst -verify ec.pub -sha256 -signature hoge.txt.sig hoge.txt ``` Verified OKと出力されればOK ↑で生成した鍵を使って署名・検証するRubyのサンプルコード ```ruby require 'openssl' key_pair = File.open('ec.key') { |f| OpenSSL::PKey::EC.new(f.read) } sig = key_pair.sign('sha256', 'hello world') pub_key = File.open('ec.pub') { |f| OpenSSL::PKey::EC.new(f.read) } puts pub_key.verify('sha256', sig, 'hello world') # => true puts pub_key.verify('sha256', sig, 'hello work') # => false、データが改竄されている ``` </markdown> ===== 楕円曲線 ===== 楕円曲線とは''y^2 = x^3 + ax + b''で表される曲線。いわゆる楕円とは関係ない 電子署名でよく使われる楕円曲線は以下の3つ(nistはアメリカ国立標準技術研究所) ^nist推奨^openssl^ |P-256|prime256v1 (secp256r1)| |P-384|secp384r1| |P-521|secp521r1| 他にも暗号として使用可能な曲線はいくつかあるが、この3つがよく使われる。ssh-keygenで使用されるのはこれらの3つの曲線である。TLSではP-256またはP-384がよく使われる(と言ってもRSA署名の圧倒的に多い)、P-521は対応していないブラウザもある(2020年12月現在)
openssl.txt
· 最終更新: 2024/07/15 10:20 by
nullpon
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ