Tag: 证书

如何从java中的eToken访问证书

我想在插入时从eToken读取证书,当我将证书存储在本地机器上时,我可以通过我的java应用程序读取它,但是,我不知道如何从eToken中读取它。 RSAPublicKey pub; String fileName = “C:\\myCert.cer”; InputStream inStream = new FileInputStream(fileName); CertificateFactory cf = CertificateFactory.getInstance(“X.509”); X509Certificate cert = (X509Certificate)cf.generateCertificate(inStream); inStream.close(); pub = (RSAPublicKey) cert.getPublicKey(); System.out.println(cert.getIssuerDN()); System.out.println(cert.getSubjectDN()); System.out.println(cert.getSubjectAlternativeNames()); byte [] tempPub = pub.getEncoded(); String sPub = new String( tempPub );

为一个别名加载Java KeyStore?

有谁知道是否可以加载KeyStore,以便它只提示给定别名的密码? 例: 在我的密钥库中,我有两个私钥:Alice的加密证书和Bob的加密证书。 当我加载我的密钥库时: keyStore = KeyStore.getInstance(“Windows-MY”, “SunMSCAPI”); keyStore.load(null); 我被提示输入Alice和Bob的密钥存储密码。 一旦输入,我可以使用getKey(“Alice’s Encryption Certificate”, null); 检索Alice的私钥。 我的密钥受Entrust的安全提供程序保护,它是在加载密钥库时提示我输入密码的人。 如果我没有输入Bob的密码并尝试获取他的密钥,它将返回null,这很好,但我想避免密码提示。 是否有可能以某种方式指定我在加载密钥存储区之前只需要Alice的密钥,这样我就不会被提示输入Bob的密码了? 谢谢。

keytool错误bash:keytool:找不到命令

我试图从Java bin目录执行keytool但是我收到一个错误警告bash:keytool:command not found。 root@xxxxxx]# keytool -genkey -alias mypassword -keyalg RSA bash: keytools: command not found

从/ assets / filename公钥加载X509Certificate不正确

我在Windows上的java中运行以下代码,它就像一个魅力。 我使用的是带有OpenSSL生成的2048 RSA密钥的证书。 要看的重要部分是mServerPublicKey = cert.getPublicKey(); 我的用例需要公钥。 String serverCertFile = “C:\\Users\\Me\\Documents\\cert.pem”; CertificateFactory certFactory; FileInputStream inStream; try { certFactory = CertificateFactory .getInstance(“X.509”); inStream = new FileInputStream (serverCertFile); X509Certificate cer = (X509Certificate) certFactory.generateCertificate(inStream); mServerPublicKey = cer.getPublicKey(); inStream.close(); } catch (CertificateException e) { // TODO Auto-generated catch block e.printStackTrace(); Log.d(“SERVER CERTIFICATE”,”Unable to load certificate ” + e.getMessage()); } […]

generateCertificate()时的CertificateException

我正在开发我的Android应用程序。 我试图从我的证书文件流生成X509Certificate实例,但获取CertificateException ,这是我的简单代码: import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; … public class CertMgr { //my certification file ‘mycert.p12’ located in my app internal storage File certFile = GET_CERT(); X509Certificate cert = null; try { FileInputStream fis = new FileInputStream(certFile); BufferedInputStream bis = new BufferedInputStream(fis); CertificateFactory cf = CertificateFactory.getInstance(“X.509”); if(bis.available() > 0){ //I got CertificateException here, […]

如何使用自签名证书在我签名的jar文件中设置发布者名称?

我编译了我的applet,创建了一个jar文件,用keytool生成了一个密钥库db,用jarsigner签署了jar,并用keytool导出了公钥证书。 现在,当我在浏览器中运行我的小程序时它确实有效,在提示我之后我是否确定要运行它。 问题是它在框中说“发布者:未知”。 无论如何我可以将其设置为我的别名,因为我编写了applet?

如何以编程方式设置JAX-WS客户端的SSLContext?

我正在使用具有浏览器客户端的分布式应用程序中的服务器,并且还参与与第三方的服务器到服务器通信。 我的服务器有一个CA签名证书,让我的客户端使用HTTP / S和XMPP(安全)使用TLS(SSL)通信进行连接。 这一切都很好。 现在,我需要通过HTTPS / SSL使用JAX-WS安全地连接到第三方服务器。 在此通信中,我的服务器在JAX-WS交互中充当客户端,并且我已经由第三方签署了客户端证书。 我尝试通过标准系统配置( -Djavax.net.ssl.keyStore=xyz )添加新的密钥库,但我的其他组件明显受此影响。 虽然我的其他组件使用专用参数进行SSL配置( my.xmpp.keystore=xxx, my.xmpp.truststore=xxy, … ),但似乎他们最终使用全局SSLContext 。 (配置命名空间my.xmpp.似乎表示分离,但事实并非如此) 我也尝试将我的客户端证书添加到我的原始密钥库中,但是 – 我的其他组件似乎也不喜欢它。 我认为我唯一的选择是以编程方式挂钩到JAX-WS HTTPS配置,以便为客户端JAX-WS交互设置密钥库和信任库。 有关如何做到这一点的任何想法/指示? 我找到的所有信息都使用了javax.net.ssl.keyStore方法,或者设置了全局SSLContext ,我想这将最终出现在同一个confilc中。 我得到的最接近的东西是这个旧的错误报告请求我需要的function: 添加支持将SSLContext传递给JAX-WS客户端运行时 任何需要?

JAVA – 使用SSL证书和HTTPS的简单GET请求

我有一个带有’.pfx’扩展名的文件和这个证书的密码。 我需要做的是向web服务发送一个简单的GET请求并阅读响应正文。 我需要实现一个类似于此的方法: String getHttpResponse(String url, String certificateFile, String passwordToCertificate){ … } 我还尝试使用openssl将证书转换为“无密码”格式: Convert a PKCS#12 file (.pfx .p12) containing a private key and certificates to PEM: openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes 所以我的方法的替代实现可能是: String getHttpResponse(String url, String certificateFile){ … } 我真的很感谢你的帮助,我花了半天的时间用谷歌搜索它,但是我还没有找到一个可以帮助我的例子,似乎我有一些关于SSL和东西的一些基本假设的问题。

如何将多个信任库路径添加到“java.net.ssl.trustStore”?

我希望我的Java代码在一个密钥库中搜索服务器的CA证书…如果它无法找到特定的证书(我认为只有当我尝试通过LDAP连接到Directory Server时才会知道),它应该是在另一个密钥库中查找证书,我知道它的路径。 我试过这个: System.setProperty(“javax.net.ssl.trustStore”, System.getProperty(“java.home”) + “/lib/security/cacerts” + System.getProperty(“path.separator”) + path/to/second/keystore); 但它似乎没有用。 只添加一个路径(其中任何一个)都可以工作,即如果找到证书就会像魅力一样运行,否则就会失败。 所以我的问题是: 是否有方法将多堆密钥库路径添加到javax.net.ssl.trustStore? 如果不可能我应该如何编写我的代码(我要求算法),以便它在第一次搜索后不会抛出exception而失败? PS:我对Java不太熟悉。 以下是我的代码的相关部分: if(useSSL) { try { SSLContext se = SSLContext.getInstance(“TLS”); Security.addProvider(se.getProvider()); } catch(NoSuchAlgorithmException e) { } System.setProperty(“javax.net.ssl.trustStore”, System.getProperty(“java.home”) + “/lib/security/cacerts”); com.org.ldap.LDAPSocketFactory ssf = new LDAPJSSESecureSocketFactory(); LDAPConnection.setSocketFactory(ssf); } try { lc = new LDAPConnection(); lc.connect( ldapServer, ldapPort); lc.bind( ldapVersion, ldapUser, […]

DefaultHttpClient,证书,Https和发布问题!

我的应用程序需要能够发布到https并保留使用cookie创建的会话。 到目前为止,我有几种不同的方法来尝试这个问题,但没有一种方法可行。 目前我正在研究使用DefaultHttpClient,因为它应该自动保留使用cookie创建的会话。 这样可以省去阅读cookie和提交其他post的痛苦。 但是,当我尝试使用我的代码发布时,post失败并出现下面列出的证书错误。 我之前有这个证书错误的另一种方式我试图解决问题,并使其与HttpsURLConnection一起工作,但这不会自动保留带cookie的会话。 有人可以看看我的代码并告诉我我做错了什么,我能做得更好以及需要改变什么才能让它发挥作用。 谢谢!! 我一直试图解决这个问题几天,我知道在哪里。 每次我再往前走一点,我都会被推回去。 有人可以帮助我! =) //my posting function private static String post(String urlString, List nameValuePairs) throws MalformedURLException, ProtocolException, IOException { DataOutputStream ostream = null; HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER; DefaultHttpClient client = new DefaultHttpClient(); SchemeRegistry registry = new SchemeRegistry(); SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory(); socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier); registry.register(new Scheme(“https”, socketFactory, 443)); […]