自己署名SSL証明書とStunnelを使用した安全なデータチャネル

こんにちは、 %username%

遅かれ早かれ、管理はすべてのネットワーク管理者になり、インターネットを介して会社のネットワークの内部リソースにアクセスするように求められます。 経営陣がジュースを飲みながらモルディブで企業のプロジェクト管理システムのタスクを解決する進捗を監視することは非常に楽しいことです。 したがって、アクセスを整理するタスクは次のようになります。
文献を読んだ後、私は自己署名SSL証明書の作成方法とStunnelプログラムについて説明しました。 自己署名(自己署名)証明書は、 作成者によって署名され特別な種類の証明書です。 技術的には、このタイプは認証センター(CA)の署名によって認証された証明書と違いはありませんが、署名のためにCAに送信する代わりに、ユーザーが独自の署名を作成します。

非常に簡単に言えば、テクノロジーの本質は次のとおりです。
証明機関を作成しています。 これを使用して、認証局によって署名された秘密鍵と証明書を作成します。 ルート証明書はサーバーに配置されます。 クライアントキーと証明書がクライアントのブラウザに入力されます。 保護されたリソースに接続しようとすると、キーペアがチェックされます。 すべてが順調であれば、サーバーとブラウザの間に安全なチャネルが作成され、データが暗号化プロトコルSSLまたはTLSに「パック」され、それによりこのデータが保護されます。

オープンソースプログラムXCAを使用して証明書を作成します。 プログラムは以下をサポートします:
•すべての32ビットMS Windows(95/98 / NT / 2000 / XP);
•すべてのBSDプラットフォーム(FreeBSD / NetBSD / OpenBSD / Apple Mac OS X);
•すべてのPOSIX(Linux / BSD / UNIX系OS)、OS X、FreeBSD、Linux。
その中に、将来の証明機関のデータベースを作成し、そこに証明書を保存します。

ここで、ルート証明書と証明機関のキーを作成する必要があります。
[ プライベートキー ]タブ-> [新しいキー ] -> [ 名前]フィールドにCAと入力し、[ 作成 ]ボタンをクリックします。 したがって、認証局の秘密鍵を作成しました。

キーの証明書を作成します。
[ 証明書 ]タブ->新しい証明書 、開いたウィンドウの[ 新しい証明書のテンプレート ]フィールドで [ [デフォルト] CA]を選択し、[ 適用 ]ボタンをクリックします。 これにより、自己署名ルート証明書を作成するためのテンプレートを選択しました。 次に、[ サブジェクト ]タブに移動します。 ルート証明書に入力されるフィールドに入力する必要があります。 塗りつぶしの例をスクリーンショットに示します。

画像

「秘密鍵」フィールドに注意してください。 ルート証明書を作成する秘密鍵の名前を示す必要があります。

[ 詳細設定 ]タブに移動し、[ 検証 ]ボタン、[ OK]ボタンの順にクリックします
現在、独自の小さな認証機関があります。
ユーザーとサーバーのキーと証明書を作成する必要があります。 これは非常に簡単です。
証明書署名タブタブ->新規リクエスト 、表示されるウィンドウで、 サブジェクトタブに移動し、ルート証明書と同様に記入します。 次に、 「新しいキーを生成する」ボタンをクリックして秘密キーを作成し、 「OK」ボタンをクリックします

画像

認証局へのリクエストを作成しました。これは、[ 証明書署名リクエスト ]タブに表示されます。 それを右クリックして、「署名」を選択します。 表示されるウィンドウの[ 署名]フィールドで、[ この証明書を署名に使用する]を選択します。 入力フィールドにルートCA証明書が表示されたら、 「OK」をクリックします。 そのため、クライアントキーと証明書は証明機関によって署名されています。

画像

同様に、 Stunnelサーバーのキーと証明書を作成します。
サーバーとユーザーの秘密鍵をPEM形式でエクスポートします。 「PKCS#12 with Certificate chain」という形式でユーザー証明書をエクスポートします。
PKCS#12 は、RSA Laboratoriesが公開している公開鍵暗号化標準(PKCS)ファミリー標準の1つです。 パスワードベースの対称キーで保護された証明書付きの秘密キーの保存に使用されるファイル形式を定義します。
エクスポートするとき、プログラムはファイルのパスワードを要求します。

画像

発明したパスワードを自由に入力してください。 次回、ユーザーのブラウザにファイルをインポートするときに入力するよう求められますので、パスワードを忘れないでください。
認証局とサーバーの証明書を「CRT」形式にエクスポートします。
他のすべてのタブとフィールドの説明は、プログラムのドキュメントに記載されています。
その結果、次のようになります。
CA.crt-証明機関のルート証明書。
Server.crt-サーバー証明書。
Server.pem-サーバー秘密鍵。
User.pkcs12-秘密鍵+クライアント証明書。

ここでStunnelを構成します。
設定ファイルstunnel.confの例:

; Certificate/key is needed in server mode and optional in client mode
;
cert = /usr/local/etc/stunnel/server.crt
key = /usr/local/etc/stunnel/server.pem

; Protocol version (all, SSLv2, SSLv3, TLSv1)
sslVersion = SSLv3

; Some security enhancements for UNIX systems - comment them out on Win32
chroot = /var/tmp/stunnel
setuid = stunnel
setgid = nogroup
pid = /stunnel.pid

; Some performance tunings
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1

; Authentication stuff
verify = 2
; CApath is located inside chroot jail
CApath = /certs
; It's often easier to use CAfile
;
CAfile = /usr/local/etc/stunnel/ca.crt
; Some debugging stuff useful for troubleshooting
debug = 7
output = /var/log/stunnel.log

;
[https]
accept = 443
connect = 192.168.1.1:80


User.pkcs12CA.crtをユーザーのブラウザーにインポートします。 User.pkcs12をインポートするとき、パスワードを入力するよう求められます。パスワードは、証明機関からエクスポートするときに指定したものと同じです。
結局、ブラウザーとローカルネットワーク上のリソースとの間で安全なデータ転送チャネルを取得します。

参照:
1. xca.sourceforge.net -XCAプログラムの公式サイト。
2. www.stunnel.org -Stunnelプログラムの公式Webサイト。

Source: https://habr.com/ru/post/J122537/


All Articles