WebSphere Liberty - 从Java

时间:2016-04-11 17:27:03

标签: java ssl ibm-cloud websphere-liberty secure-gateway

我的同事使用相互身份验证为我们的项目设置了一个(Bluemix)安全网关。他用Ruby和CURL对它进行了测试,效果很好。但是在配置我的Liberty服务器以使用它时,我遇到了很多问题。

我使用了here找到的说明。

基本上...

要为客户端创建密钥库,请输入以下命令。在以下示例中,创建了key.p.12。

openssl pkcs12 -export -in "[client]_cert.pem" -inkey "[client]_key" -out "sg_key.p12" -name BmxCliCert -noiter –nomaciter –password pass:<password>

创建PKCS12商店。 (我在下面的server.xml中使用它)

然后我将证书添加到我的密钥库中。

然后我改变了我的server.xml,以便在我的引用中引用一个信任存储

<ldapRegistry baseDN="o=ibm.com" host="bluepages.ibm.com" id="bluepages" ignoreCase="true" 
    ldapType="IBM Tivoli Directory Server" port="636" realm="w3" sslEnabled="true" sslRef="SSLSettings">

    <idsFilters groupFilter="(&amp;(cn=%v)(objectclass=groupOfUniqueNames))" groupIdMap="*:cn" groupMemberIdMap="groupOfUniqueNames:uniquemember" userFilter="(&amp;(emailAddress=%v)(objectclass=person))" userIdMap="*:emailAddress"/>

</ldapRegistry>

<ssl id="SSLSettings" keyStoreRef="defaultKeyStore" trustStoreRef="defaultTrustStore"/>     

<keyStore id="defaultKeyStore" password="xxxxxx" 
    location="${server.output.dir}/resources/security/key.jks"/>

<keyStore id="defaultTrustStore"
    location="${server.output.dir}/resources/security/sg_key.p12"
    type="PKCS12" password="xxxxxx" />

这里的问题#1

当我添加信任库时,我无法再通过LDAP服务器进行身份验证。它只是说无效的用户或密码。我删除了信任存储..我可以再次验证。因此添加信任库会产生某种影响。

问题#2。当我删除我的LDAP服务器并只使用基本用户注册表...我可以登录...但是当我尝试使用安全网关时,我得到..

[错误] javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure

我已经从安全网关导入了证书,所以不确定我为什么会这样做?

所以有两个问题..使用信任库..我再也无法通过LDAP进行身份验证......第二个...即使在导入所有证书后也无法连接到安全网关......

任何人都使用Bluemix与Java的Secure Gateway(Mutual Auth)成功了吗?

请求的信息(已编辑)

Enter Import Password:
MAC Iteration 2048
MAC verified OK
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Certificate bag
Bag Attributes
    friendlyName: portal
    localKeyID: 5F A0 D5 5D 68 C5 39 65 7D 24 D7 78 9B CD 7D 01 FB 1B 00 6D 
subject=/ST=NC/C=US/L=RTP/O=IBM Corporation/OU=SWG/CN=*.integration.ibmcloud.com
issuer=/ST=NC/C=US/L=RTP/O=IBM Corporation/OU=SWG/CN=*.integration.ibmcloud.com
-----BEGIN CERTIFICATE-----
INFO
4Q==
-----END CERTIFICATE-----
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048
Bag Attributes
    friendlyName: portal
    localKeyID: 5F A0 D5 5D 68 C5 39 65 7D 24 D7 78 9B CD 7D 01 FB 1B 00 6D 
Key Attributes: <No Attributes>
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----BEGIN ENCRYPTED PRIVATE KEY-----
INFO
-----END ENCRYPTED PRIVATE KEY-----

1 个答案:

答案 0 :(得分:0)

终于有了这个工作。

以前的代码..

。 。 。

connection = (HttpsURLConnection) url.openConnection();

其中url是Secure Gateway的URL。

在此之前添加......

KeyStore clientStore = KeyStore.getInstance("PKCS12");
clientStore.load(new FileInputStream(KEY_STORE_PATH), "xxxxxx".toCharArray());

KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());

kmf.init(clientStore, "xxxxxx".toCharArray());

KeyManager[] kms = kmf.getKeyManagers();

KeyStore trustStore = KeyStore.getInstance("JKS");

trustStore.load(new FileInputStream(TRUST_STORE_PATH), "xxxxxx".toCharArray());

TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());

tmf.init(trustStore);

TrustManager[] tms = tmf.getTrustManagers();

SSLContext sslContext = null;

sslContext = SSLContext.getInstance("TLS");

sslContext.init(kms, tms, new SecureRandom());

HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());`

connection = (HttpsURLConnection) url.openConnection();

现在它有效...... tx

此主题中的一些好消息.. LINK