我们可以在spring MVC控制器中动态更改SSL证书吗?

时间:2017-01-18 05:30:20

标签: spring spring-mvc ssl

我的问题很简单,我们可以动态更改ssl证书吗? 假设我有两个自签名证书,/ 2 / keystore.jks和/3/keystore.jks

我的问题是我可以将第一个证书用于一个网址,将第二个证书用于其他网址。

到目前为止,我尝试了不同的代码

import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.cert.X509Certificate;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



public class CertificateUtil {

    public static X509Certificate readCertificateFile(String keystorefilePath, String clientKeystorePassword, String alias)
        throws Exception {
        KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
        ks.load(new FileInputStream(keystorefilePath),
            clientKeystorePassword.toCharArray());
        KeyStore.PrivateKeyEntry keyEntry = (KeyStore.PrivateKeyEntry) ks.getEntry(alias,
            new KeyStore.PasswordProtection(clientKeystorePassword.toCharArray()));
        X509Certificate cert = (X509Certificate) keyEntry.getCertificate();
        return cert;
    }

    public static void setCertificateInRequest(HttpServletRequest request, HttpServletResponse response) {
        try {
            X509Certificate x509Certificate = readCertificateFile(required args...);

            request.setAttribute("javax.servlet.request.X509Certificate", javax.security.cert.X509Certificate.getInstance(x509Certificate.getEncoded()));
            request.setAttribute("java.servlet.request.X509Certificate", x509Certificate);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

我尝试了不同的解决方案到目前为止没有任何工作,如果你能指出我的方向非常好。

PS我使用此命令生成证书文件

  keytool -genkey -keyalg RSA -alias aliasweb -keystore keystore.jks -storepass aliasweb -validity 360 -keysize 2048

提前致谢。

1 个答案:

答案 0 :(得分:0)

经过漫长而耗时的RND后,我确认这是不可能的。 SSL证书与IP地址相关联,这至少是不可能的。

感谢。