相关疑难解决方法(0)

如何解析SSL证书服务器名称/我可以使用keytool添加备用名称吗?

为清楚起见,这些可能被表述为单独的问题,但它们都与同一问题有关.

SSL证书服务器名称是如何解析的?

为什么浏览器似乎使用证书的CN字段,但Java的机制似乎只关注"主题替代名称"?

是否可以使用keytool为SSL证书添加备用名称?如果没有,是使用openSSL而不是一个好的选择?

只是一点背景:我需要让主服务器使用HTTPS与多个服务器通信.显然,我们不想为每个服务器购买SSL证书(可能有很多),所以我想使用自签名证书(我一直使用keytool来生成它们).在操作系统中添加证书后,浏览器(IE和Chrome)很乐意接受该连接为可信任的.但是,即使将证书添加到Java的cacerts之后,Java仍然不会将该连接接受为受信任,并抛出以下异常:

引起:java.security.cert.CertificateException:在sun.security.util.HostnameChecker.match(HostnameChecker.java:75)的sun.security.util.HostnameChecker.matchIP(HostnameChecker.java:142)中没有主题备用名称. at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkIdentity(X509T rustManagerImpl.java:264)at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:250)at com. sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Clien tHandshaker.java:1185)... 14更多

我发现我可以让Java信任实现我自己的HostNameVerifier的证书,我从这里复制了:com.sun.jbi.internal.security.https.DefaultHostnameVerifier只是为了测试(顺便说一句,主机名作为参数传递给HostnameVerifier是正确的,所以我认为应该已经接受了).

我一直使用证书字段CN作为主机名(通常是IP地址).

任何人都可以告诉我,如果我做错了什么,并指出我正确的方向?

java security ssl

72
推荐指数
1
解决办法
12万
查看次数

IIS Express - 让SSL工作

我无法让IIS Express接受我正在开发的VS2010 MVC3项目的安全连接.我可以让它接受端口80上的不安全连接,但不能在端口443上安全.

我基于谷歌搜索采取了以下步骤:

1)通过在VS2010命令行上执行以下操作,找到我的IIS Express Server自签名证书的SHA1指纹:

certmgr.exe /c /s /r localMachine MY
Run Code Online (Sandbox Code Playgroud)

结果是9B088F80 A4FC3141 28F62890 70BA1FC4 49FDD009.后来我才知道我需要在使用指纹时删除空格.

2)通过在提升的命令行提示符下执行以下命令,删除链接到端口443的任何证书:

netsh http delete sslcert ipport=0.0.0.0:443
Run Code Online (Sandbox Code Playgroud)

3)通过在VS2010工具菜单中运行Create GUID生成新的GUID.在我的情况下,我得到了B0421A5B-FF61-47CE-892D-11AA3A9C7D2A.

4)通过在提升的命令行提示符上执行以下命令,将自签名证书安装到端口443:

netsh http add sslcert ipport=0.0.0.0:443 certhash=9B088F80A4FC314128F6289070BA1FC449FDD009 appid={B0421A5B-FF61-47CE-892D-11AA3A9C7D2A}
Run Code Online (Sandbox Code Playgroud)

5)通过从提升的命令行提示符运行以下命令来修改ACL:

netsh http add urlacl url=https://localhost:443/ user=everyone
Run Code Online (Sandbox Code Playgroud)

6)通过为端口443和https协议添加绑定,修改了IIS Express的application.config文件.该文件的网站部分最终看起来像这样:

        <sites>
        <site name="Development Web Site" id="1" serverAutoStart="true">
            <application path="/">
                <virtualDirectory path="/" physicalPath="%IIS_BIN%\AppServer\empty_wwwroot" />
            </application>
            <bindings>
                <binding protocol="https" bindingInformation="*:443:localhost" />
                <binding protocol="http" bindingInformation="*:80:localhost" />
            </bindings>
        </site>
        <siteDefaults>
            <logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" />
            <traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" />
        </siteDefaults>
        <applicationDefaults …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc ssl visual-studio iis-express

60
推荐指数
3
解决办法
4万
查看次数

使用makecert为自签名证书添加或创建"使用者替代名称"字段

如何使用makecert"使用者替代名称"字段创建证书?

在此输入图像描述

您可以使用-eku选项添加一些字段,例如"增强型密钥用法",我尝试了-san选项,但makecert不喜欢它.

这是一个自签名证书,因此任何使用IIS创建要发送给CA的内容的方法都不合适.

certificate self-signed makecert x509certificate

27
推荐指数
3
解决办法
3万
查看次数

是什么让SSL安全?

我一直在互联网上阅读一些关于SSL如何工作的网站,但我不明白它究竟是如何确保安全的.可能是因为我完全不了解它是如何工作的.

让我先从SSL的核心思想开始.它用于加密HTTP连接,但是对于客户端和服务器与加密数据通信,肯定需要共享加密密钥.如果有人在窃听您的连接,他们是否只能抓住此密钥并在解密数据时继续收听?如果我们谈论的是长期连接,我可以想象这种技术会起作用,但HTTP请求通常会在半秒内完成.

让我们假设这是以某种方式照顾的.SSL的另一个用途是验证服务器是否与它所说的完全一致.是什么阻止了恶意服务器伪造由根证书提供者签名的证书?在我读过的所有描述中,浏览器实际上都联系了其中一个权限来验证证书.我们假设证书是由根证书颁发机构用私钥加密的,浏览器如何在不知道解密密钥的情况下验证此证书中的数据?或者解密密钥与加密密钥不同?

我可以想象的一个解决方案是,如果证书和密钥只发送一次,并与浏览器中的域和IP地址一起存储.

感谢您提前解释.

security ssl https

2
推荐指数
1
解决办法
1538
查看次数