- 追加された行はこの色です。
- 削除された行はこの色です。
*OrcaでglclientのSSL接続 [#v5a10189]
Ubuntu10.04 LTSで実験
RIGHT:更新日 &lastmod();
**CA、サーバ、クライアント証明書作成 [#pa018c7e]
***ツールの設定 [#q7bb351d]
/etc/apt/sources.listの最後の行に以下を追加
deb ftp://orca.med.or.jp/pub/debian sarge jma
$ sudo aptitude update
$ sudo aptitude install jma-certtool
[Xwindow上の端末でglclient2を使用するユーザでログイン]
$ jma-certtool
パスワードを聞かれるので、rootとあるが、sudoの時のユーザパスワードを入力
初めて起動するとCA証明の情報を入力
新しいCAの名前: ismCA
国名(必須) : JP
組織名(必須) : Orca Team
コモンネーム : Orca
鍵アルゴリズム : RSA
鍵(ビット長) : 2048
ダイジェスト : SHA1
CA鍵パスワード :************ (1)
その後新規作成でサーバ証明書、クライアント証明書を作成
***サーバ証明書 [#r5e43de4]
国名(必須) : JP
組織名(必須) : Orca Team
コモンネーム(必須) :localhost
コモンネーム(必須) :localhost または 10.99.99.193
コモンネームにはFQDNかIPアドレスを入れる
鍵アルゴリズム : RSA
鍵(ビット長) : 2048
ダイジェスト : SHA1
その後「OK」
''CAによる署名''
CA鍵パスワード : (1)を入力
プロファイル:「orca-server」
ユーザ名 : 空白
&color(red){証明書の有効期限はCAの有効期限より短くする必要がある。クライアントも同じ};
*** クライアント証明書 [#j6d0608b]
国名(必須) : JP
組織名(必須) : Orca Team
コモンネーム(必須) :Okada (担当者、クライアント名など)
鍵アルゴリズム : RSA
鍵(ビット長) : 2048
ダイジェスト : SHA1
その後「OK」
''CAによる署名''
CA鍵パスワード : (1)を入力
プロファイル:「orca-client」
ユーザ名 : oruser (すでにorcaに登録済のユーザを指定)
ユーザ名 : ormaster (すでにorcaに登録済のユーザを指定)
***CA証明書 サーバ証明書 クライアント証明書のエクスポート [#c3ee63cb]
先にhomeに適当なディレクトリ ssl_keyを作成
$ mkdir ssl_key
$ chmod og-rwx ssl_key
''サーバ証明書''
証明書タブで~
-サーバ証明書を右クリックし、「エクスポート(PKCS #12)」
-出力ファイルパスワード 「必ず空白」
-ssl_keyに「gl-cacert.pem」という名前で保存
-ssl_keyに「glserver.p12」という名前で保存
''クライアント証明書''
証明書タブで~
-クライアント証明書を右クリックし、「エクスポート(PKCS #12)」
-出力ファイルパスワード 「必ず設定」 (2)
-ssl_keyに「oruser.pem」というユーザ名の名前で保存
-ssl_keyに「ormaster.p12」というユーザ名の名前で保存
''CA証明書''
認証局タブで CA証明書のエクスポート(PEM)
保存先は同様に「ssl_key」
保存先は同様に「ssl_key」に「gl-cacert.pem」という名前で保存
***各ファイルの確認方法(テキスト表示) [#m63e7bc7]
''pem形式''
$ openssl x509 -in gl-cacert.pem -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=JP, O=Orca Team, CN=Orca
Validity
Not Before: Feb 24 05:54:48 2011 GMT
Not After : Feb 21 05:54:48 2021 GMT
Subject: C=JP, O=Orca Team, CN=Orca
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (2048 bit)
Modulus (2048 bit):
(略)
''pkcs12形式''
-サーバ証明書
$ openssl pkcs12 -in glserver.p12 -info
Enter Import Password:(指定していないのでEnter)
MAC Iteration 1
MAC verified OK
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Certificate bag
Bag Attributes
localKeyID: 3D B4 A0 D9 B4 C5 67 7D 1A 87 CF AB 30 60 FA A3 04 CD 00 AD
subject=/C=JP/O=Orca Team/CN=10.99.99.193
issuer=/C=JP/O=Orca Team/CN=Orca
-----BEGIN CERTIFICATE-----
MIIDhDCCAmygAwIBAgIBAjANBgkqhkiG9w0BAQUFADAwMQswCQYDVQQGEwJKUDES
(略)
nOykdkSdGfg1ImNsrBY9KDy/XiFd
-----END CERTIFICATE-----
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048
Bag Attributes
localKeyID: 3D B4 A0 D9 B4 C5 67 7D 1A 87 CF AB 30 60 FA A3 04 CD 00 AD
Key Attributes: <No Attributes>
Enter PEM pass phrase:(適当な4文字以上を入力)
Verifying - Enter PEM pass phrase:(同じ文字列を入力)
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,F96EE03ABAB5AFB8
(略)
-クライアント証明書
$ openssl pkcs12 -in ormaster.p12 -info
Enter Import Password:(クライアント証明書エクスポート時のパスワード (2) )
MAC Iteration 1
MAC verified OK
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Certificate bag
Bag Attributes
(略)
***ユーザDBファイル作成 [#b1a57263]
メニューの「ツール」から「日レセ用ユーザDBを作成する」
ファイル名がuserdbなのでそのままでssl_keyに保存
ファイル名がuserdbなのでそのままで「ssl_keyフォルダ」に保存
従来はglauthサーバが認証を請け負っていたのをこのファイルに変更するため
**サーバ設定 [#w19c4a7f]
***作成ファイルを配置 [#q40f3218]
現時点ではサーバ機とクライアント機が同一マシン
-サーバ証明書
/etc/jma-receipt/glserver.p12
-CA証明書
/etc/ssl/certs/gl-cacert.pem
-ユーザDBファイル
/etc/jma-receipt/userdb
-クライアント証明書
~/.glclient/gl-client.p12
$ cd ~/ssl_key
$ sudo cp glserver.p12 /etc/jma-receipt/
$ sudo cp gl-cacert.pem /etc/ssl/certs/
$ sudo cp userdb /etc/jma-receipt/
$ sudo cp ormaster.p12 ~/.glclient/gl-client.p12
$ sudo chown orca.orca /etc/jma-receipt/glserver.p12
$ sudo chown orca.orca /etc/jma-receipt/glserver.p12 (orcaを起動しているユーザ)
$ sudo chmod 400 /etc/jma-receipt/glserver.p12
$ sudo chmod 400 ~/.glclient/gl-client.p12
$ sudo chown oruser.oruser ~/.glclient/gl-client.p12 (glclientを起動するカレントユーザ)
以下も必要かも
$ sudo chmod 500 ~/.glclient
***jma-receipt 再設定 [#x375534e]
SSLでの接続を設定し、ユーザ認証のglauthサーバを停止する設定を行う
$ sudo /usr/sbin/dpkg-reconfigure jma-receipt
基本は現在の指定をそのまま使用し、「glauthサーバ」は使用しないを選択し
「SSLは有効」を指定する
-----------|jma-receipt を設定しています|------------------
| jma-receipt 用に dbredirector をスタートしますか? |
| |
| <はい> <いいえ>(選択) |
| |
-----------------------------------------------------------
----------------|jma-receipt を設定しています|-------------------------
|SSLを有効にするには電子証明書が必要です。またパスワード認証が無効に |
|なるため、SSLに対応していないクライアントを利用して接続できなくなりま|
|す。 |
| |
|glserver の SSLを有効にしますか? |
| |
| <はい>(選択) <いいえ> |
| |
-----------------------------------------------------------------------
その後再起動
$ sudo /etc/init.d/jma-receipt restart
''確認''
$ netstat -an | grep -i tcp
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8001 0.0.0.0:* LISTEN
tcp 0 52 10.99.99.193:22 10.99.99.100:52836 ESTABLISHED
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
tcp6 0 0 ::1:5432 :::* LISTEN
8000ポートに接続でうまく動作するはず。なぜか8001も開いてしまったが未調査
8000ポートのオープンがないときはうまく動作しなかった(それ以外のポートは不可)
8000ポートのオープンがしないときはうまく動作しなかった(それ以外のポートは接続不可)
確認ように端末から以下のコマンド(マニュアルはglclientだがglclient2しかないので)で確認したが以下のエラーが出た
$ glclient2 -port localhost:8000 -ssl -cert ~/.glclient/gl-client.p12 -CAfile /etc/ssl/certs/gl-cacert.pem panda:orca00
&color(red){SSL_CTX_load_verify_locations(<CA証明書へのパス、またはCA証明書ファイル>)でエラーが発生しました: 「CA証明書へのパス」または「CA証明書ファイル」が不正な可能性があります。};
でも、通常にglclient2からは接続できた
さらに「ssh-askpass」が必要かもしれないのでインストール
$ sudo aptitude install ssh-askpass ssh-askpass-gnome
**glclient2の接続 [#ad12b24d]
''基本タブ''
ホスト名はサーバ証明書の「コモンネーム」を指定後はSSLを使用しない時と変更なし
ホスト名はサーバ証明書の「コモンネーム」を指定後はSSLを使用しない時と変更なし~
ユーザ名、パスワードはなくてもSSLのほうで認証取れるので不要(これがglauthサーバ用のユーザ名、パスワードだと思われる)
&ref("./ssl1.png);
&ref("./ssl1.png");
''SSLタブ''
-SSLを使用するをチェック
-CA証明書ファイル:/etc/ssl/certs/gl-cacert.pem
-証明書ファイル名(pem/p12):/etc/jma-receipt/glserver.p12-
-暗号スイート:DEFAULT
&ref("./ssl2.png);
&ref("./ssl2.png");
''パスフレーズ入力''
クライアント証明書のエクスポートでの出力ファイルパスワード(2)を入力
&ref("./ssl3.png);
&ref("./ssl3.png");
**Window用glclient (monsiaj) [#rbe14c7d]
***javaの設定 [#pc91f343]
-「Java」コントロールパネルを開く(Windows7はコントロールパネル->プログラム->Java)
&ref("./win_ssl1.png");
-「セキュリティ」タブ
-「証明書」ボタンをクリックし、「証明書」ウィンドウを開く。
-「証明書タイプ」で「セキュアサイトCA」を選択し、「ユーザ」タブを選択
-「インポート」ボタンをクリックしてファイルの選択画面を開き、「ファイルタイプ」を「すべて」
-CA 証明書をインポート
&ref("./win_ssl2.png");
***glclientの設定 [#q4966e88]
-「SSL 設定」タブに移動し、「SSL を使用」にチェックを入れて「クライアント証明書」ボックスにクライアント証明書のパスを指定
- PKCS#12 ファイルのパスワードを-「パスワード」ボックスに入力( (2)のパスワード)
&ref("./win_ssl3.png");