【Linux】opensslコマンドでTLSバージョンを指定して疎通確認


TLS脆弱性が懸念されバージョンを1.2のみ使用することにし、他のバージョンの利用を停止するみたいな作業を行いました。


動作確認のためにサーバに対して、TLSのバージョン1.0および1.1で通信ができない事を確認することになり、opensslコマンドで検証することになりました。


その時の備忘録です。

opensslコマンドって?

opensslコマンドはSSLおよびTLSの機能が実装したプログラムでオープンソースソフトウェアとして公開されています!

以下の機能があります。

  1. 公開鍵暗号化操作
  2. メッセージダイジェストの計算
  3. 暗号化と復号化
  4. TLSクライアントとサーバーテスト

など。


インストール方法

[root@server ~]#yum -y install openssl

TLSのバージョンを指定して疎通確認をする

私はTLS1.0とTLS1.1の使用を停止するようにしたので、これらで通信ができないことを確認することにしました。


opensslでTLSのバージョンを指定して疎通を確認するには下記のコマンドを実施します。

[root@xxx-xxx]#openssl -connect 127.0.0.1:443 -tls1 ←TLSのバージョンを指定

127.0.0.1に指定することで自分のサーバに向けて実行にしていますが、ホスト名とかにして他のサーバの疎通確認もできるようです。

一番右の-tlsXXでTLSのバージョンを指定できます。


TLSの通信ができない場合は下記のような感じで返ってきます
※一部抜粋です。

[root@xxx-xxx]#openssl -connect 127.0.0.1:443 -tls1


---
no peer certicate available

---
No client certificate CA names sent

---
SSL handshake has read xxx bytes and written xxx bytes

---

New, (NONE), Ciper is (NONE)

Secure Renegotiation IS NOT supported

SSL-Session
       Protocol    :     TLS1

証明書がないよ!サポートされてないよという感じで返ってきます。


TLS1.2で通信できるかも確認

上記のコマンドと結果でTLS1.2が通信できるかの動作確認も行いました。

コマンドは先ほどと同じです。TLSのバージョンをTLS1.2を指定します。

[root@xxx-xxx]#openssl -connect 127.0.0.1:443 -tls1_2

実行するとこんな感じで返ってきました。

[root@xxx-xxx]#openssl -connect 127.0.0.1:443 -tls1_2


---
Server certificate
------BEGIN CERTIFICATE------
xxxxx.........
.........
.........

---
SSL handshake has read xxxx bytes and written xxx bytes
New, TLSv1/TLSv3, Ciper is(XXXX-XXX-XXX)

Secure Renegotiation IS supported

SSL-Session
       Protocol    :     TLS1.2
       .....
       .....

サポートはしていて、証明書の内容みたいなのもドッと流れてきます。

TLSのバージョンを指定するオプションたち

オプション 説明
-tls1 tls1.0を使用
-tls1_1 tls1.1を使用
-tls1_2 tls1.2を使用
-no_tls1 tls1.0を無効
-no_tls1_1 tls1.1を無効
-no_tls1_" tls1.2を無効

さいご

最後まで読んでいただき、ありがとうございました。

もし、記載している内容が間違えていれば遠慮なくコメントしてください!
私自身の勉強になりますし、他の人がこの記事を見た時に間違えた情報を見ることになってしまうので💦