#author("2022-05-21T22:14:45+09:00","default:k1rou","k1rou")
#author("2023-10-05T08:50:43+09:00","default:k1rou","k1rou")
*OpenSSL とは [#q47581a6]
-https://www.openssl.org/
-https://github.com/openssl/openssl
-[[SSL]]と[[TLS]]のプロトコルでの通信に使うことができる[[OSS]]のソフトウェア。
-[[HTTPS]]の実装の多くに使われている。
-様々な[[暗号化]]の方式に対応している。
*コマンド [#pa47a35d]
**openssl [#g6b8cd79]
-プロンプトを起動
openssl
-文字列のハッシュ生成
echo -n "MESSAGE" | openssl sha1
echo -n "MESSAGE" | openssl dgst -md5
echo -n "MESSAGE" | openssl dgst -sha256
***[[公開鍵暗号方式]]:[[RSA]] [#e21d448a]
-鍵の生成
--秘密鍵を生成 ※標準出力
openssl genrsa 1024
openssl genrsa 2048
--秘密鍵を生成 ※ファイル出力([[PEM]]形式)
openssl genrsa -out <private-keyfile.pem> 1024
openssl genrsa -out <private-keyfile.pem> 2048
--秘密鍵から公開鍵を生成 ※ファイル出力([[PEM]]形式)
openssl rsa -in <private-keyfile.pem> -pubout -out <public-keyfile.pem>
-暗号化・復号
--公開鍵で暗号化
openssl rsautl -encrypt -pubin -inkey <public-keyfile.pem> -in <input-file.txt> -out <output-file.rsa>
--秘密鍵で復号 ※平文が出力される
openssl rsautl -decrypt -inkey <private-keyfile.pem> -in <input-file.rsa>
-鍵の中身を出力
--秘密鍵
openssl rsa -in <private-keyfile.pem> -text -noout
--公開鍵
openssl rsa -pubin -in <public-keyfile.pem> -text -noout
-鍵の形式を変換して出力(PEM→DER)
--秘密鍵
openssl rsa -in <private-keyfile.pem> -out <private-keyfile.der> -outform der
--公開鍵
openssl rsa -pubin -in <public-keyfile.pem> -out <public-keyfile.der> -outform der
-鍵の形式を変換して出力(DER→PEM)
--秘密鍵
openssl rsa -in <private-keyfile.der> -inform der -out <private-keyfile.pem>
--公開鍵
openssl rsa -pubin -in <public-keyfile.der> -inform der -out <public-keyfile.pem>
***[[デジタル証明書]]:[[X.509]] [#e9fb46ca]
-鍵の中身を出力
openssl x509 -in <public-keyfile.crt> -text -noout
***その他、例 [#h8796b19]
-任意の文字列をSHA-256(バイナリ)に変換後、Base64エンコードする
echo -n "文字列" | openssl dgst -sha256 -binary | base64
*脆弱性 [#n5d47fda]
-HeartBleed
--[[OpenSSL]]のVer.1.0.1のSSLの死活監視機能(heartbeat)の脆弱性
--https://www.jnsa.org/secshindan/secshindan_11.html
-[[バージョンロールバック攻撃]]
*参考サイト [#bfe6a704]
-UNIX/Linuxの部屋 opensslコマンドの使い方~
http://x68000.q-e-d.net/~68user/unix/pickup?openssl
-OpenSSLのマニュアルの日本語訳~
http://home.att.ne.jp/theta/diatom/FrontPage.html
-opensslコマンドを使って暗号化したり、復号化したり、オプションの意味がわからなくてOpenSSL本体のソースを読んだりした~
https://qiita.com/akase244/items/4f8936957c910682d1de
*関連用語 [#c5c313d8]
-[[CFSSL]]
-[[CSR]]
-[[OpenSSH]]
-[[SSL/TLS]]
-[[X.509]]
-[[チェックサム]]
-[[セキュリティ]]
-[[LibreSSL]]