- CachéDBMS側でのSSLの構成と有効化
- CachéDBMSに組み込まれたApacheのSSL構成。
- CSP / ZEN Webアプリケーションのクライアント証明書からデータを読み取ります。
- SSLを使用した.NETからの接続 。
- SSLを使用した.Javaからの接続 。
- WebサーバーとCachéDBMSの間に安全な接続を確立するためのCSPゲートウェイでのSSLの構成
- ODBCでのSSL構成 。
Note:CachéDBMSでSSLを使用する他の例は、ミラーリング、Telnet、TCP / IP(ソケット)、Webサービス、Cachéスタジオなどです。 - ドキュメントまたはテクニカルサポートで見つけることができます。まず、証明書(ルート(CA:認証局)、サーバー、クライアント)を生成しましょう。
インターネットでは、このトピックに関する多くの資料を見つけることができます。例: 電子署名 。
注:eTokenは望ましいですが、必須ではありません。
一連のテストデジタル証明書の生成
テスト証明書の生成、署名、検証、および失効のプロセスを簡素化するために、一連のバットスクリプトが用意されています。 自由に変更できます。 詳細については、対応するファイルを参照してください。
それでは、証明書を作成しましょう。
- パスワードなしで秘密鍵を生成します。 必要に応じて、たとえば-aes256パラメーターを追加することにより、パスワードで保護できます。
openssl genrsa -out cakey.pem -rand randfile 4096 openssl genrsa -out serverkey.pem -rand randfile 2048 openssl genrsa -out clientkey.pem -rand randfile 2048
- 認証要求を作成します。 対応するファイルからリクエストのデータを取得します。
openssl req -new -key cakey.pem -config cfgCA.txt -out cacsr.pem openssl req -new -key serverkey.pem -config cfgServer.txt -out servercsr.pem openssl req -new -key clientkey.pem -config cfgClient.txt -out clientcsr.pem
- 証明書の作成と署名:
openssl x509 -req -signkey cakey.pem -in cacsr.pem -extfile cfgCA.txt -extensions v3_req -out cacrt.pem -days 365 openssl ca -config ca.config -extensions v3_server -in servercsr.pem -out servercrt.pem -batch openssl ca -config ca.config -extensions v3_client -in clientcsr.pem -out clientcrt.pem -batch
- Windowsの.NET、eToken、証明書ストアに適したDER形式に証明書をトランスコードします。 エクスポート用のパスワードは空白のままにできます。
openssl x509 -inform PEM -in cacrt.pem -outform DER -out ca.cer openssl x509 -inform PEM -in servercrt.pem -outform DER -out server.cer openssl x509 -inform PEM -in clientcrt.pem -outform DER -out client.cer openssl pkcs12 -export -in cacrt.pem -inkey cakey.pem -out ca.pfx -name "CA certificate CACHE" openssl pkcs12 -export -in servercrt.pem -inkey serverkey.pem -out server.pfx -name "Server certificate CACHE" openssl pkcs12 -export -in clientcrt.pem -inkey clientkey.pem -out client.pfx -name "Client certificate CACHE"
- クライアント証明書のいずれかを失効させます(オプション)。 失効した証明書のリストを再作成します。
rem openssl ca -config ca.config -revoke clientcrt.pem openssl ca -config ca.config -gencrl -out crl.pem openssl crl -outform DER -in crl.pem -out crl.crl -CAfile cacrt.pem copy crl.crl C:\Inetpub\wwwroot\crl.crl
- 証明書の内容をファイルに印刷して読みやすくします。
openssl x509 -in cacrt.pem -noout -text >ca.log openssl x509 -in servercrt.pem -noout -text >server.log openssl x509 -in clientcrt.pem -noout -text >client.log openssl crl -in crl.pem -text -noout
- 証明書の有効性を確認します。
openssl verify -CAfile cacrt.pem servercrt.pem clientcrt.pem
ca.configファイルの内容:
[ca] default_ca=CA_CLIENT [CA_CLIENT] dir=./db certs = $dir/certs new_certs_dir = $dir/newcerts database = $dir/index.txt serial = $dir/serial certificate = ./cacrt.pem private_key = ./cakey.pem default_days = 365 default_crl_hours = 4 default_md = sha1 policy = policy_anything # [policy_anything] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional serialNumber = optional [v3_server] basicConstraints = critical,CA:false nsComment = "Server certificate CACHE" nsCertType = server keyUsage = critical,digitalSignature, nonRepudiation, keyEncipherment, keyAgreement crlDistributionPoints = URI:http://localhost/crl.crl [v3_client] subjectAltName = email:copy basicConstraints = critical,CA:false nsComment = "Client certificate CACHE" nsCertType = client, email, objsign keyUsage = critical,digitalSignature, nonRepudiation, keyEncipherment, keyAgreement crlDistributionPoints = URI:http://localhost/crl.crl
cfgCA.txtファイルの内容:
# [req] distinguished_name = req_distinguished_name prompt = no extensions = v3_req [req_distinguished_name] # C=MD # ST=Moldova # L=Chisinau # O=abc # OU=zxc # (, ) CN=CACHE # emailAddress=support@abc.md [v3_req] subjectAltName = email:copy keyUsage = critical, keyCertSign, cRLSign basicConstraints = critical, CA:TRUE, pathlen:0 nsComment = "CA certificate CACHE" nsCertType = sslCA, emailCA crlDistributionPoints = URI:http://localhost/crl.crl
cfgServer.txtファイルの内容:
# [req] distinguished_name = distinguished_name prompt = no [distinguished_name] C=MD ST=Moldova L=Chisinau O=abc OU=zxc CN=localhost
cfgClient.txtファイルの内容:
# [req] distinguished_name = distinguished_name prompt = no [distinguished_name] serialNumber=987654321 CN=superuser emailAddress=my@abc.md
これでテスト証明書が作成されました。 次に、Caché、Apache、証明書ストアに登録し、必要に応じて、eTokenにインストールします。
Windows証明書ストアに証明書をインストールします
増す
これを行うには、管理コンソール(mmc.exe)から適切なスナップインを使用できます。
- ca.cerは、ローカルコンピューターの信頼されたルート証明機関にインストールする必要があります。
- server.pfxは、ローカルコンピューターの個人証明書にインストールする必要があります(IISの構成に必要)。
- client.pfxは、現在のユーザーの個人証明書にインストールする必要があります。 eTokenの所有者は、この項目をスキップできます。
eTokenに証明書をインストールする
これを行うには、デバイスに付属のソフトウェアを使用します。
CachéでSSL構成を構成する
- ポータルで、 %SuperServerという名前のSSL構成を作成および構成します。
増す
- CachéスーパーサーバによるSSL / TLSサポートを有効にします。
増す
- すべてが正しくセットアップされ、SSLサポートが機能していることを確認するために、テストクライアント構成を作成して構成します。
増す
次に、SSL接続をテストします。 すべてを正しく行った場合、スクリーンショットのように、安全な接続の確立に関するメッセージが表示されます。
注:必要に応じて、 %TELNET / SSLという名前のSSL構成を作成して、telnet接続でSSLをサポートできます。
Cachéに組み込まれたApacheのSSL構成
注:このセクションの詳細な説明は、 mod_sslのドキュメントに記載されています。 ここから Windows用SSLを使用した Apacheをダウンロードします。
- mod_ssl.soファイルを%acheHome%\ httpd \ modulesフォルダーにインストールします。
- %acheHome%\ httpd \ conf \ httpd.confファイルに次の行を追加します 。
... UseCanonicalName Off SSLEngine on SSLCertificateFile C:/SSLKeys/servercrt.pem SSLCertificateKeyFile C:/SSLKeys/serverkey.pem SSLCACertificateFile C:/SSLKeys/cacrt.pem SSLVerifyClient require SSLVerifyDepth 10 SSLCipherSuite TLSv1:SSLv3:!ADH:!LOW:!EXP:@STRENGTH SSLOptions +StdEnvVars ... LoadModule ssl_module modules/mod_ssl.so ...
- コマンドラインからビルトインApacheを再起動します:
httpd.exe -k restart -n CACHEhttpd -c "Listen 8972"
- システム管理ポータルまたはキューバからドキュメントを起動し、安全な接続を確立するために、サーバー証明書と同じ認証センターによって署名された有効なクライアント証明書が必要です。
CSP / ZENアプリケーションからのクライアント証明書データの読み取り
CSPゲートウェイで、追加のすべてのCGI環境変数のCachéへの転送を有効にする必要があります。
増す
これで、Webアプリケーションで、次のようにWebサーバーのタイプに応じて証明書設定を取得できます。
Class sqlru.testpage Extends %ZEN.Component.page
{
/// This XML block defines the contents of this page.
XData Contents [ XMLNamespace = "www.intersystems.com/zen" ]
{
< page xmlns = "www.intersystems.com/zen" title = "" >
< textarea id = "ta" value = "test" rows = "10" cols = "50" />
</ page >
}
Method %OnAfterCreatePage() As %Status
{
if %request. CgiEnvs ( "SERVER_SOFTWARE" )[ "Apache" {
set a = %request. CgiEnvs ( "SSL_CLIENT_S_DN" )
} else {
set a = %request. CgiEnvs ( "CERT_SUBJECT" )
}
do .. %SetValueById ( "ta" ,a)
Quit $$$OK
}
}
他の証明書属性も同じ方法で読み取ることができます。
- SSL_CLIENT_I_DN ;
- SSL_SERVER_I_DN ;
- SSL_SERVER_S_DN ;
- ...
SSLを使用して.NETからCachéに接続する
var db = new CacheConnection("Server = localhost; Port = 1972; Namespace = SAMPLES; Password = SYS; User ID = _SYSTEM; SSL=true;"); if (db.State == ConnectionState.Closed) { db.Open(); textBox1.Text = db.ServerZV; } db.Close();
個人証明書ストアの最初の有効な証明書が使用されます。 証明書がeToken上にある場合、PINコードが要求されます。
たとえば、ストレージが空の場合、eTokenが挿入されていない、またはすべての証明書が無効な場合、接続はエラーで中断されます。
SSLを使用してJavaからCachéに接続する
まず、適切なストアに証明書を追加する必要があります。truststoreの信頼できる証明書、 keystoreのクライアント証明書。
この場合、パスワード「mysecret」で保護されたファイルclient_pwd.pfxが キーストアとして適しています 。
ルート証明書は、別のトラストストアまたは標準のcacertsに挿入できます。
keytool -importcert -alias CACHE -file c:\SSLKeys\ca.cer -keystore truststore -storepass mysecret
または keytool -importcert -alias CACHE -file c:\SSLKeys\ca.cer -keystore cacerts -storepass changeit
次に、クライアント構成ファイルSSLConfig.Propertiesを作成します。
protocol=SSLv3 keyStore=C:/SSLKeys/client_pwd.pfx keyStoreType=PKCS12 keyStorePassword=mysecret keyRecoveryPassword=mysecret # ca cacerts, trustStore=C:/SSLKeys/truststore trustStoreType=JKS trustStorePassword=mysecret
注:詳細については、 JSSEのドキュメントをご覧ください。
次のように、SSLを使用してJavaアプリケーションから接続できるようになりました。
package test; import java.sql.Connection; import com.intersys.jdbc.CacheDataSource; public class Test { public static void main(String[] args) throws Throwable { String url = "jdbc:Cache://localhost:1972/USER"; String username = "_SYSTEM"; String password = "SYS"; System.setProperty("com.intersys.SSLConfigFile", "C:/SSLKeys/SSLConfig.Properties"); CacheDataSource cs = new CacheDataSource(); cs.setURL(url); cs.setUser(username); cs.setPassword(password); cs.setConnectionSecurityLevel(10); Connection cn = cs.getConnection(); System.out.println(" !"); //Database db = CacheDatabase.getDatabase(cn); } }
CSPゲートウェイでのSSLの構成
増す
サーバーへの接続を確認しましょう。すべて正しくセットアップされていますか?
増す
ODBCでSSLを構成する
SSL構成設定はレジストリに保存されます: HKEY_CURRENT_USER \ Software \ InterSystems \ Cache \ SSLConfigurations \ SSL configuration name
パラメーターの説明は、 Security.SSLConfigsクラスにあります。
テスト設定はCacheOdbcSSL.regファイルにあります(以下を参照)。
サーバーへの接続を確認しましょう。すべて正しくセットアップされていますか?
ソーススクリプト