*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 または 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」 ユーザ名 : ormaster (すでにorcaに登録済のユーザを指定) ***CA証明書 サーバ証明書 クライアント証明書のエクスポート [#c3ee63cb] 先にhomeに適当なディレクトリ ssl_keyを作成 $ mkdir ssl_key $ chmod og-rwx ssl_key ''サーバ証明書'' 証明書タブで~ -サーバ証明書を右クリックし、「エクスポート(PKCS #12)」 -出力ファイルパスワード 「必ず空白」 -ssl_keyに「glserver.p12」という名前で保存 ''クライアント証明書'' 証明書タブで~ -クライアント証明書を右クリックし、「エクスポート(PKCS #12)」 -出力ファイルパスワード 「必ず設定」 (2) -ssl_keyに「ormaster.p12」というユーザ名の名前で保存 ''CA証明書'' 認証局タブで CA証明書のエクスポート(PEM) 保存先は同様に「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フォルダ」に保存 従来は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 (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のほうで認証取れるので不要(これがglauthサーバ用のユーザ名、パスワードだと思われる) &ref("./ssl1.png"); ''SSLタブ'' -SSLを使用するをチェック -CA証明書ファイル:/etc/ssl/certs/gl-cacert.pem -証明書ファイル名(pem/p12):/etc/jma-receipt/glserver.p12- -暗号スイート:DEFAULT &ref("./ssl2.png"); ''パスフレーズ入力'' クライアント証明書のエクスポートでの出力ファイルパスワード(2)を入力 &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");