草庐IT

java - 使用 Java 编写 SSL 检查器

有人知道关于用Java编写SSL检查器的任何好的教程、站点和/或书籍吗?我正在尝试做可以在这里找到的事情:http://www.sslshopper.com/ssl-checker.html.我不是要创建自签名证书或使用keystore。我希望能够访问任何站点,确定是否存在有效的SSL证书,确定证书上的主机名是否与输入的名称匹配,并确定该证书何时过期。我用谷歌搜索了这个主题,但“如何使用Java创建SSL购物者”没有给我任何结果,我的其他搜索只给我带来了关于如何创建自签名证书的链接。任何帮助将不胜感激。 最佳答案 要首先获取服务器证

java - 在 Java 8 中,可以使 HttpsURLConnection 发送服务器名称指示(SNI)

Oracle文档似乎表明Java8默认自动发送SNI。Wireshark另有指示。我是PowerShell系统管理员,而不是Java开发人员,所以几乎可以肯定我忽略了一些东西。当与正确的信任keystore一起使用时,以下代码从所有不需要SNI的SSL网站返回状态200。当连接到多主机Apache服务器的默认SSL网站时,它也能很好地返回。但是,当被要求连接到非默认站点时,由于证书名称与站点名称不匹配,它会失败,因为它连接到默认站点。importjava.util.*;importjava.net.*;importjavax.net.ssl.*;importjava.io.*;publ

java - 打开 https URL : keyCertSign bit is not set 时出错

我正在使用以下代码调用远程httpsURL:definputStream=newURL("https://somewebsite.com").openStream()这在我的本地机器上运行良好,但是当我部署到服务器时,出现以下异常:java.security.cert.CertPathValidatorException:CAkeyusagecheckfailed:keyCertSignbitisnotset此错误的原因是什么?是什么原因导致它在一台机器上而不是另一台机器上运行?更新我在生产环境中运行Ubuntu服务器,并在本地Mac上进行开发。我尝试访问的网站(我们称之为people

java - 如何使用 Java web 服务器实现 "privilege separation"的一些度量?

我正在努力主动解决我的Jetty网络服务器盒的安全问题——尤其是在存储SSLkey信息方面,尽管我想要一个通用的解决方案。Apache使用privilegeseparation以便它以root身份启动,以便它可以读取protectedSSLkey文件(和其他安全配置),然后切换到一些普通用户以实际服务器HTTP请求。但是Java没有执行此操作的机制。关于如何在Java网络应用程序中实现相同级别的安全性有什么建议吗?我的要求包括:secret信息只能由root读取。任何解锁key等的密码都不应配置到代码中,以免与服务器具有相同用户级别权限的人无法轻易获得它们。我在AmazonEC2下运行

java - 如何在 Spring 上配置 SSL/HTTPS?

我正在开发一个需要HTTPS的SpringJava应用程序,我关注了Spring'sguidetoconfigureSSL.我的application.properties文件包含以下内容:server.port=8443server.ssl.key-store=classpath:keystore.p12server.ssl.key-store-password=passwordserver.ssl.key-password=passwordserver.ssl.keyStoreType=JCEKSserver.ssl.keyAlias=alias当应用程序运行时,控制台输出Tomc

java - 具有自己的证书颁发机构的 Cassandra SSL

我想设置我自己的CA以用于cassandra集群,这样我就不必在每次添加新节点时都复制所有证书。我已经阅读了一些关于Cassandra和SSL的教程,但它们都与复制证书有关。我在CA过程中有点迷茫这是我认为我需要做的创建CA一次为每个节点创建一个CSR,然后用我的CA对每个节点进行签名(->另存为nodeX.crt)将node0.crt导入到我的cassandranode0keystore,将node1.crt导入到node1keystore等现在:我需要向信任库添加任何内容吗?我需要对CA文件做些什么吗?将其复制到每个客户端/节点服务器?我需要为我的java客户端提供什么文件?cql

java - 获取 Java 中默认系统信任库的 SSLContext(JSEE)

我一直在我的程序中使用自定义keystore,方法是指定javax.net.ssl.keyStore、javax.net.ssl.keyStorePassword、javax。net.ssl.trustStore,javax.net.ssl.trustStorePassword。我的信任库包含自签名证书。现在我想发出一些https请求(比如https://google.com)并使用包含不同CA信息的默认jre系统trusstore。要发出http请求,我使用OkHttp库。它的客户端可以选择指定SslSocketFactory,但要获得它,我需要为默认的jre信任库初始化SSLCon

java - 为什么 Nginx 以相反的顺序提供客户端 SSL DN?

我很好奇为什么有些Web服务器(例如Nginx)以相反的顺序提供客户端SSLDN。Web应用程序正在将DN发布到JavaWeb服务,该服务正在尝试创建Javajavax.naming.ldap.LdapName.标准顺序(LDAP或X500Name):"CN=JimmyBlooptoop,OU=Someplace,OU=Employees,DC=Bloopsoft-Inc"逆序(OpenSSL联机格式)(Nginx返回的内容为_$ssl_client_s_dn_):"/DC=Bloopsoft-Inc/OU=Employees/OU=Someplace/CN=JimmyBlooptoo

java - 如何在不转换为 keystore 的情况下从 PEM 证书和 key 构建 SSLSocketFactory?

我获得了一个自签名客户端证书工具包,用于通过HTTPS访问服务器。该套件包含以下PEM文件:client.crt(客户端证书)client.key(客户端私钥)ca.crt(CA证书)解决该任务的一种方法是生成Javakeystore:使用openssl将客户端证书和key转换为PKCS12keystore使用keytool将CA证书导入商店...然后使用如下代码构建SSLSocketFactory实例:InputStreamstream=newByteArrayInputStream(pksData);KeyStorekeyStore=KeyStore.getInstance("PK

javax.net.ssl.SSLException : Certificate for <> doesn't match any of the subject alternative names: [] 异常

当我尝试使用Postman访问URL时,它工作正常,通过使用我的个人证书。但是当我使用RestAssured测试用例尝试相同时,它抛出上述异常。配置类publicclassConfiguration{protectedSSLConfigconfig=null;privatestaticfinalLoggerLOG=LoggerFactory.getLogger(Configuration.class);@SuppressWarnings("deprecation")@BeforeClasspublicvoidsetKeystore(){KeyStorekeyStore=null;Key