我有一个客户端将拥有的Web服务,我希望将发送到服务器的数据加密。为了测试这个,我使用了自签名SSL证书。我知道当你使用自签名证书时,当你导航到使用它的任何地址时,网络浏览器会警告你它是不安全的等等。
我想知道如果我在网络服务上线时使用此证书而不是经过验证的证书,我是否会遇到任何问题?
此外,我没有服务器的域名,所以我只是要使用我的ISP提供的IP地址,这是否可以使用证书,因为我读到的所有地方的人都在说话关于将它们与域名一起使用?
答案 0 :(得分:2)
SSL证书通常发布到域并由颁发机构签名。当浏览器连接到服务器时,服务器将其证书提供给客户端。然后,客户端通过检查其访问的域是否与证书中提到的域相同来验证证书。此外,它还验证了其信任链。这意味着发行人的证书也应该是有效的。如果发行方不是根签名机构,则验证发行方的发行方证书。并且,最终应该信任根签名机构,这意味着根签名机构应该在您的信任库中。所有主要的签名机构,如Verisign,Thawte等,默认情况下都是JDK委托人,因此如果您有他们签署的证书,那么您在验证您的信任链时就没有问题。如果您的证书由不受信任的机构签名,那么您需要手动在您的信任链中导入颁发者的证书。
现在,在使用自签名证书时,颁发证书的实体本身就是根签名机构。因此,应该手动将证书导入您的信任库。您需要执行此操作才能获得SSL握手。但仅此一点并不能解决您的问题。由于您没有使用任何域名,因此如果您通过DHCP服务器自动获取服务器IP,则每次重新启动服务器时都可能更改IP。如果是这种情况,那么一旦IP更改,即使是受信任的自签名证书也不会起作用。因为,证书颁发给IP,一旦IP更改,证书将变为无效。要解决此问题,您需要从网络管理员处获取服务器的静态IP地址。然后为您的静态IP生成自签名证书。然后让您的客户在您的信任存储区中添加您的服务器证书。
这对您的客户来说有点乏味。但是,如果您拥有固定数量的客户端并且客户端计算机在您的控制之下,那么您可以自己将服务器证书添加到客户端信任存储区。但是,如果您的服务器对所有人开放或拥有大量客户端,那么我建议获得由知名且受信任的证书颁发机构签署的证书。同样,除非您的服务器获得域名,否则无论谁签署您的证书,您仍然需要拥有静态IP。
答案 1 :(得分:0)
自签名证书的问题在任何场景,浏览器或非浏览器中都是相同的:它本身绝对没有任何保证。 SSL的目的有两个:加密和身份验证。通常,SSL客户端正在使用/要求这两个方面,以确保连接真正被视为安全。
对于身份验证("我与谁交谈?"),使用证书。要使用证书对您的对等方进行身份验证,您将需要拥有该证书的副本以进行比较,或者您需要获得该证书的签名者证书的副本以比较签名。如果你没有,证书不能保证。
含义:如果客户端拥有该证书的副本并且可以信任他们从中获取证书的来源,则自签名证书很好。如果您的用例非常狭窄将要连接到您的Web服务的客户将事先与您联系(例如通过电子邮件),您可以将证书副本提供给他们,以便他们安装到他们的本地信任商店,然后他们无论如何都能为您建立安全且经过身份验证的连接。
对于拥有随意随机访问者的典型网站,这是行不通的;这是签名证书的用途,其中已经受信任的实体可以担保一个迄今未知的第三实体。但它可能在供应商 - 客户场景中可行。
话虽如此,证书现在可以免费获得,并为您的服务提供更多的信誉和专业。
是的,证书可以是issued for IP addresses。