OrcaでglclientのSSL接続

Ubuntu10.04 LTSで実験

更新日 2011-02-24 (木) 16:48:38

CA、サーバ、クライアント証明書作成

ツールの設定

/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)

その後新規作成でサーバ証明書、クライアント証明書を作成

サーバ証明書

国名(必須) : JP
組織名(必須) : Orca Team
コモンネーム(必須) :localhost または 10.99.99.193

コモンネームにはFQDNかIPアドレスを入れる

鍵アルゴリズム : RSA
鍵(ビット長)   : 2048
ダイジェスト   : SHA1

その後「OK」

CAによる署名

CA鍵パスワード : (1)を入力
プロファイル:「orca-server」
ユーザ名  : 空白

証明書の有効期限はCAの有効期限より短くする必要がある。クライアントも同じ

クライアント証明書

国名(必須) : JP
組織名(必須) : Orca Team
コモンネーム(必須) :Okada (担当者、クライアント名など)
鍵アルゴリズム : RSA
鍵(ビット長)   : 2048
ダイジェスト   : SHA1

その後「OK」

CAによる署名

CA鍵パスワード : (1)を入力
プロファイル:「orca-client」
ユーザ名  : ormaster (すでにorcaに登録済のユーザを指定)

CA証明書 サーバ証明書 クライアント証明書のエクスポート

先に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」という名前で保存

各ファイルの確認方法(テキスト表示)

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ファイル作成

メニューの「ツール」から「日レセ用ユーザDBを作成する」

ファイル名がuserdbなのでそのままで「ssl_keyフォルダ」に保存

従来はglauthサーバが認証を請け負っていたのをこのファイルに変更するため

サーバ設定

作成ファイルを配置

現時点ではサーバ機とクライアント機が同一マシン

  • サーバ証明書
    /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 再設定

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ポートのオープンがしないときはうまく動作しなかった(それ以外のポートは接続不可)

確認ように端末から以下のコマンド(マニュアルはglclientだがglclient2しかないので)で確認したが以下のエラーが出た

$ glclient2 -port localhost:8000 -ssl -cert ~/.glclient/gl-client.p12 -CAfile /etc/ssl/certs/gl-cacert.pem panda:orca00

SSL_CTX_load_verify_locations(<CA証明書へのパス、またはCA証明書ファイル>)でエラーが発生しました: 「CA証明書へのパス」または「CA証明書ファイル」が不正な可能性があります。

でも、通常にglclient2からは接続できた

さらに「ssh-askpass」が必要かもしれないのでインストール

$ sudo aptitude install ssh-askpass ssh-askpass-gnome

glclient2の接続

基本タブ

ホスト名はサーバ証明書の「コモンネーム」を指定後はSSLを使用しない時と変更なし
ユーザ名、パスワードはなくてもSSLのほうで認証取れるので不要(これがglauthサーバ用のユーザ名、パスワードだと思われる)

ssl1.png

SSLタブ

  • SSLを使用するをチェック
  • CA証明書ファイル:/etc/ssl/certs/gl-cacert.pem
  • 証明書ファイル名(pem/p12):/etc/jma-receipt/glserver.p12-
  • 暗号スイート:DEFAULT

ssl2.png

パスフレーズ入力

クライアント証明書のエクスポートでの出力ファイルパスワード(2)を入力

ssl3.png

Window用glclient (monsiaj)

javaの設定

  • 「Java」コントロールパネルを開く(Windows7はコントロールパネル->プログラム->Java)

win_ssl1.png

  • 「セキュリティ」タブ
  • 「証明書」ボタンをクリックし、「証明書」ウィンドウを開く。
  • 「証明書タイプ」で「セキュアサイトCA」を選択し、「ユーザ」タブを選択
  • 「インポート」ボタンをクリックしてファイルの選択画面を開き、「ファイルタイプ」を「すべて」
  • CA 証明書をインポート

win_ssl2.png

glclientの設定

  • 「SSL 設定」タブに移動し、「SSL を使用」にチェックを入れて「クライアント証明書」ボックスにクライアント証明書のパスを指定
  • PKCS#12 ファイルのパスワードを-「パスワード」ボックスに入力( (2)のパスワード)

win_ssl3.png


添付ファイル: filewin_ssl3.png 90件 [詳細] filewin_ssl2.png 88件 [詳細] filewin_ssl1.png 96件 [詳細] filessl3.png 107件 [詳細] filessl2.png 89件 [詳細] filessl1.png 92件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-02-24 (木) 16:48:38 (2558d)