らっちゃいブログ

日々の学びと気づきを発信するブログ

いちいち調べてられない!よく使うopensslコマンドまとめた

スポンサーリンク

よく openssl コマンドを使うのですが、なかなか覚えられないのが悩みです。必要になったら都度調べているのですが、効率が悪いのでそろそろ使う頻度が高いコマンドくらいは覚えてやろうと思い、まとめてみることにしました。

サブコマンドの種類を確認

そもそも、どれくらいのサブコマンドがあるのか確認してみます。openssl helpと打ってみたら、そんなコマンドないぞって怒られながらもサブコマンドの一覧を得ることに成功しました。

$ openssl help
openssl:Error: 'help' is an invalid command.

Standard commands
asn1parse         ca                ciphers           cms               
crl               crl2pkcs7         dgst              dh                
dhparam           dsa               dsaparam          ec                
ecparam           enc               engine            errstr            
gendh             gendsa            genpkey           genrsa            
nseq              ocsp              passwd            pkcs12            
pkcs7             pkcs8             pkey              pkeyparam         
pkeyutl           prime             rand              req               
rsa               rsautl            s_client          s_server          
s_time            sess_id           smime             speed             
spkac             srp               ts                verify            
version           x509              

Message Digest commands (see the `dgst' command for more details)
md4               md5               rmd160            sha               
sha1              

Cipher commands (see the `enc' command for more details)
aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb       
aes-256-cbc       aes-256-ecb       base64            bf                
bf-cbc            bf-cfb            bf-ecb            bf-ofb            
camellia-128-cbc  camellia-128-ecb  camellia-192-cbc  camellia-192-ecb  
camellia-256-cbc  camellia-256-ecb  cast              cast-cbc          
cast5-cbc         cast5-cfb         cast5-ecb         cast5-ofb         
des               des-cbc           des-cfb           des-ecb           
des-ede           des-ede-cbc       des-ede-cfb       des-ede-ofb       
des-ede3          des-ede3-cbc      des-ede3-cfb      des-ede3-ofb      
des-ofb           des3              desx              rc2               
rc2-40-cbc        rc2-64-cbc        rc2-cbc           rc2-cfb           
rc2-ecb           rc2-ofb           rc4               rc4-40            
seed              seed-cbc          seed-cfb          seed-ecb          
seed-ofb          

うわあ、こんなにあるのか。。ちょっと引いた。

でも今回まとめるのは自分がよく使うコマンドに限定するので、まあいいか。

使い方

では、得られた一覧の上から順に使いそうなサブコマンドをピックアップしてまとめていきます。

ca

CRL を作成する

$ openssl ca -gencrl -out CA.crl

証明書を失効させる

$ openssl ca -revoke newcerts/cert.pem

ciphers

サイファースイート一覧を取得

$ openssl ciphers

crl

CRL の内容を確認

$ openssl crl -in CA.crl -text

genrsa

秘密鍵を作成(平文)

$ openssl genrsa 2024 > key.pem

秘密鍵を作成(パスフレーズ付き)

$ openssl genrsa -aes256 2024 > key.pem

公開鍵を作成

$ openssl rsa -in key.pem -pubout -out pub.pem

pkcs12

pkcs12(pfx)形式にする

$ openssl pkcs12 -export -inkey key.pem -in cert.pem -certfile cacert.pem -out racchai.p12 -caname "Private_CA"

pkcs12形式から秘密鍵を抜き取る

$ openssl pkcs12 -in racchai.pfx -nocerts -nodes -out key.pem

pkcs12形式から証明書を抜き取る

$ openssl pkcs12 -in racchai.pfx -clcerts -nokeys -out cert.pem

pkcs12形式からルート証明書を抜き取る

$ openssl pkcs12 -in racchai.pfx -cacerts -nokeys -out ca.pem

req

CSR を作成

$ openssl req -new -sha256 -key key.pem > csr.pem

CSR の内容を確認

$ openssl req -in csr.pem -text

rsa

秘密鍵パスフレーズ解除

$ openssl rsa -in pass.pem -out plain.pem

秘密鍵の内容を確認

$ openssl rsa -in key.pem -text

s_client

SSL/TLS での動作確認

$ openssl s_client -connect www.google.com:443

証明書チェインを確認

$ openssl s_client -connect www.google.com:443 -showcerts

verify

証明書の検証

$ openssl verify -CAfile cacert.pem cert.pem

verion

バージョン確認

$ openssl version

x509

CSR に署名する

$ openssl x509 -in csr.pem -sha256 -days 365 -req -signkey ca_key.pem > cert.pem

証明書の中身を確認

$ openssl x509 -in cert.pem -text

証明書から公開鍵を取り出す

$ openssl x509 -in cert.pem -pubkey -noout

おまけ

サーバー証明書を一から作る

$ openssl genrsa 2024 > key.pem
$ openssl req -new -sha256 -key key.pem > csr.pem
$ openssl x509 -in csr.pem -sha256 -days 365 -req -signkey ca_key.pem > cert.pem

sshアクセス用の秘密鍵/公開鍵の作成を一発で(opensslじゃないけど)

github にアクセスするつもりで出力。

$ ssh-keygen -t rsa -f ~/.ssh/github

蛇足。

$ cat >> ~/.ssh/config <<EOS
Host github
HostName github.com
User git
IdentityFile ~/.ssh/github

まとめ

結局この記事見直せば覚えなくていいってことに気づいた。

暗号技術入門 第3版 秘密の国のアリス

暗号技術入門 第3版 秘密の国のアリス