(再まとめ) CAの構築とサーバ証明書・クライアント証明書の作成

OpenSSLを使用して、CAを立てて、サーバ証明書とクライアント証明書を作成する手順を再度まとめておくことにします。 合わせて、期限切れ時などの証明書更新時には、期限切れになった証明書を無効化する必要がありますので、その手順もまとめておきます。

■作成日 2015年12月29~31日に作成しているという設定。

■仕様 全体の仕様として、デフォルトだとSHA1になるメッセージダイジェストをSHA2に強化。この仕様は、下記ファイルで設定しておくことにする。 (1) CAスクリプト /etc/pki/tls/misc/CA (2) OpenSSL設定ファイル /etc/pki/tls/openssl.cnf

CA: ・有効期間10年3650日 ・鍵の長さ2048bit ・メッセージダイジェストSHA256

サーバ証明書: ・有効期限369日(翌年1月3日まで) ・鍵の長さ2048bit ・メッセージダイジェストSHA256

クライアント証明書: ・有効期限368日(翌年1月3日まで) ・鍵の長さ2048bit ・メッセージダイジェストSHA256

デフォルト設定値: ・countryName_default = JP ・stateOrProvinceName_default = Kanagawa ・localityName_default = Kawasaki ・0.organizationName_default = goofoo

■準備 ディレクトリバックアップ

# cp -pr /etc/pki{,.20161231}

■CA CAスクリプト編集

# cp -p /etc/pki/tls/misc/CA{,.org} # vim /etc/pki/tls/misc/CA # diff /etc/pki/tls/misc/CA.org 続きを読む »

iptablesで、特定のIPアドレスからのアクセスを拒否する

iptables に、特定のIPアドレスからのアクセスを拒否する設定を追加する手順を、簡単にまとめておきます。

iptables の設定ファイル/etc/sysyconfig/iptables を直接編集する方法ではなく、ここでは iptablesコマンドを使います。

特定のIPアドレスからのアクセスですので、TCPもUDPなどプロトコルを限定しないで、すべて拒否しますので、プロトコルは指定しません。 また、ユーザ定義のチェイン RH-Firewall-1-INPUT が、次のように設定されていることを前提とします。

[root ~]# vim /etc/sysconfig/iptables ~略~ *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT ~略~

それでは、特定のIPアドレスからのアクセスを拒否する設定を追加してみます。

[root ~]# iptables -A RH-Firewall-1-INPUT -s 123.145.167.189 -j DROP

この時点で、iptables の動作に動的に反映されますので、実行には十分な注意を払う必要があります。コマンド内容を丁寧に確認してから、実行してください。

コマンドを実行後に、設定内容を確認します。

[root ~]# iptables -L ~略~ Chain RH-Firewall-1-INPUT (2 続きを読む »

SSL証明書の作成での failed to update database TXT_DB error number2 発生時の対処

SSLのサーバ証明書やクライアント証明書を作成しようとした場合に、次のようなエラーが発生することがあります。

[root ~]# openssl ca -in client.csr -out client.crt Using configuration from /etc/pki/tls/openssl.cnf Enter pass phrase for ../../CA/private/cakey.pem: Check that the request matches the signature Signature ok Certificate Details: (略) Sign the certificate? [y/n]:y failed to update database TXT_DB error number 2

これは、CAに対する証明書要求を一旦 revoke(無効化)してから、再度、SSL証明書の作成を実行すれば、成功します。

[root ~]# openssl ca -revoke /etc/pki/CA/newcerts/00.pem

なお、/etc/pki/CA/index.txt の内容を削除してから、再度実行しても同じ結果が得られます。revoke でうまくいかない場合にも、この方法を試してみてください。 /etc/pki/CA/index.txt の内容削除は次の要領で行います。

続きを読む »

iptables の設定を確認する

/etc/iptablesを設定し、iptablesを再起動した後で、設定の反映状態を確認するためには、次のコマンドを実行します。

コマンド/オプション 機能の説明 iptables -L iptablesの設定を詳細表示する(IPアドレスを名前解決してホスト名で表示する) iptables -L -n iptablesの設定を詳細表示する(IPアドレスを名前解決しないで表示する)

Tera Term からSSHログインするための秘密鍵の変換

sshにはSECSHの形式とOpenSSHの形式があり、それぞれ鍵の形式が異なります。 また、sshクライアントが対応する秘密鍵の形式に違いが出てきます。 秘密鍵の形式の違いは下表の通りです。

SSHの形式 秘密鍵ファイルの先頭 対応するsshクライアント SECSH —- BEGIN SSH2 ENCRYPTED PRIVATE KEY —- Poderosa OpenSSH —–BEGIN RSA PRIVATE KEY—– Tera Term (TTSSH)

このように、秘密鍵の形式が異なり、sshクライアントによって対応する形式が違うため、SECSH の形式の秘密鍵を使用して Tera Term (TTSSH) からSSHログインすることはできません。その場合には、秘密鍵の変換が必要になります。

その変換は、PuTTYgen を使用して、次のような手順で行えます。

SECSHの秘密鍵をLoad [Conversions]-[Export OpenSSH key]で変換・保存

なお、変換後のファイル名には一般的に.ppk拡張子を付けます。

この変換後の秘密鍵を使用することで、Tera Term (TTSSH)からsshログインができるようになりますので、お試しください。