javassl代码,JAVASSM

发布时间:2022-11-21

本文目录一览:

  1. Java 代码操作带SSL的FTP服务器
  2. 如何用Java代码来把SSL的证书自动导入到Jav
  3. 如何在Java SE使用SSL设定相互验证
  4. JAVA怎样调用https类型的webservice

Java 代码操作带SSL的FTP服务器

参考

client = new FTPSClient(implictSSL);
KeyManagerFactory kmf = KeyManagerFactory.getInstance("X509");
kmf.init(KeyStore.getInstance("BKS"), "wshr.ut".toCharArray());
client.setTrustManager(new X509TrustManager() {
    public X509Certificate[] getAcceptedIssuers() { return null; }
    public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { }
    public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { }
});
client.setKeyManager(kmf.getKeyManagers()[0]);
client.setNeedClientAuth(false);
client.setUseClientMode(false);

如何用Java代码来把SSL的证书自动导入到Jav

下面这个Java类可以帮助我们做这个事情。同时我们还可以把这个帮助方法开发一个可视化的程序,这样就更加方便:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.security.KeyStore;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.List;
import javax.naming.ldap.LdapName;
import javax.naming.ldap.Rdn;
import javax.security.auth.x500.X500Principal;
public class KeyStoreHelper {
    public static void createTrustJKSKeyStore(final String originalTrustFolder, final String jksTrustStoreLocation, final String password) {
        File keyStoreFile = new File(jksTrustStoreLocation);
        if (!keyStoreFile.exists()) {
            try {
                KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
                keystore.load(null, password.toCharArray());
                File trustedFolder = new File(originalTrustFolder);
                File[] certs = trustedFolder.listFiles();
                if (certs != null) {
                    for (File cert : certs) {
                        CertificateFactory factory = CertificateFactory.getInstance("X.509");
                        try {
                            X509Certificate certificate = (X509Certificate) factory.generateCertificate(new FileInputStream(cert));
                            X500Principal principal = certificate.getSubjectX500Principal();
                            LdapName ldapDN = new LdapName(principal.getName());
                            List<Rdn> rdns = ldapDN.getRdns();
                            for (Rdn rdn : rdns) {
                                String type = rdn.getType();
                                if (type.equals("CN")) {
                                    keystore.setCertificateEntry((String) rdn.getValue(), certificate);
                                    break;
                                }
                            }
                        } catch (Exception ex) {
                            continue;
                        }
                    }
                }
                FileOutputStream fos = new FileOutputStream(jksTrustStoreLocation);
                keystore.store(fos, password.toCharArray());
                fos.close();
            } catch (Exception exp) {
            }
        }
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        KeyStoreHelper.createTrustJKSKeyStore("D:\\cacerts", "D:\\cacerts\\test.jks", "test123");
    }
}

如何在Java SE使用SSL设定相互验证

这个要考虑并发,即使两个用户同时请求,请求的也是你底层的一段代码,在这个代码上面加锁,一个访问结束之前另一个不能访问。 Java实现ssl,需要将ssl证书导入jvm,才能正常工作,否则不行。 导入命令参考如下:

keytool -import -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit -keypass 123456 -alias 45alias -file D:/test.cer

JAVA怎样调用https类型的webservice

  1. 打开webService链接,右键属性—》证书—》详细信息—》复制到文件,保存cer格式的文件。
  2. 复制下面的cmd命令,执行keytool命令,生成keystore文件,例如:
c:\nciic.keystore
keytool -import -alias nciic -file c:\jswszx.cer -keystore c:\nciic.keystore

它会提示输入密码,随便输入,例如:123456,回车 4. 他会提示是否信任这个认证,输入Y,回车,指定目录下就会生成nciic.keystore文件 5. 修改Java代码 在调用接口方法之前,添加如下代码:

System.setProperty("javax.NET.ssl.trustStore","c://nciic.keystore");
System.setProperty("java.protocol.handler.pkgs","com.sun.Net.ssl.internal.");
java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());