Answers:
我认为您可以执行此操作,但是您尝试执行此操作的方式不行。
SSL证书是将公共加密密钥绑定到X.500结构(包含CN或Common Name元素)的语句。签名证书就是这样一种证书,其中的绑定由第三方证书颁发机构使用最终用户已知的公钥(位于您的浏览器中的证书颁发机构(CA)证书堆栈)进行验证。
当您使用浏览器访问受SSL保护的网站时,已签名的CN被浏览器识别。 浏览器选择如何处理取决于浏览器。 我知道的浏览器将其与请求的主机名进行比较,如果不相同(或者该认证的绑定无法经受分析,例如浏览器不知道签名证书或绑定不正确),则会发生错误。的日期,但这是一个不同的问题)。原则上没有什么可以阻止您获得公开签名的证书,其中CN是IP地址而不是FQDN(完全限定的域名)[1],但这不会使浏览器神奇地将CN与IP进行比较地址,而不是请求的主机名。
我怀疑解决问题的最简单方法是启动自己的CA,这很容易做到,并且有许多关于此的公共教程。一个在这里。一旦您的最终用户将您的CA导入他们的浏览器,您铸造的所有证书都将被视为权威证书。
然后,您可能会遇到第二个问题,即您想在一个IP地址上运行许多NameVirtualHost站点。从历史上讲,这是无与伦比的,因为(与TLS不同)SSL协商先于连接中的其他任何事务进行;也就是说,在客户端能够说出他们要连接的主机之前,客户端已知道并使用了证书中嵌入的CN 。
最近,似乎已经引入了一种称为SNI(服务器名称指示)的协议扩展,该协议扩展允许客户端和服务器在提供SSL证书之前指示他们想做一些主机名操作,从而允许一组正确的名称。服务器要提供的证书数量。显然,这需要Apache 2.2.10(一个足够新的OpenSSL版本)和(重要的是)客户端支持。
因此,如果我必须做您想做的事情,那么我会考虑创建自己的CA证书,告诉最终用户他们必须使用支持SNI的浏览器并导入我的CA根证书,并剪切和为每个Bugtrack网站签名我自己的SSL证书。
[1]好的,您可能找不到任何愿意这样做的人,但这只是实现细节。我要在这里显示的是,即使您这样做,也无法解决您的问题。
我知道有一个根证书颁发机构预先装有所有主要的浏览器,并在公共IP地址上颁发SSL证书:请查看GlobalSign。他们读出RIPE信息以验证您的证书请求,因此您可能需要首先检查RIPE条目是否以正确的名称发出。
关于反馈,该条目已得到:
是的,最好购买一个域名并在该CN上颁发SSL证书。它也比上面的GlobalSign选项便宜。
但是,在某些情况下,以公共IP作为CN的SSL证书很有用。许多互联网提供商和政府都基于DNS基础结构来阻止不需要的站点。如果您提供某种可能由于政治原因而被阻止的站点,那么可以通过其公共IP地址访问该站点是一个不错的选择。同时,您将希望为这些用户加密流量,并且不希望非技术用户免于点击浏览器安全异常警告的麻烦(因为证书的CN不匹配)实际输入的)。让他们安装自己的根CA更加麻烦且不切实际。
继续购买域名。它们很便宜,不要比这便宜。您只需要一个。甚至可以只设置bugtracker.yourcompany.com。
然后为每个Bugtracker设置该名称的子域。获取每个子域的SSL证书。由于您似乎特别讨厌成本,因此您想与之开展业务的公司称为StartSSL。
您之所以要使用它们,是因为(除了受到主要浏览器的信任之外)它们的证书也不会花费很多时间。老实说,最基本的证书是免费的。他们会验证您的身份,然后让您根据需要进行发布。如果您想要更高级的证书(通常需要花费数百美元),则可以在2年内花费约50美元,以在单个IP上支持多个域的SSL。
对于您所获得的东西,它们超级便宜。他们会发布真正的证书,受到您的客户浏览器的信任,而不是像其他地方那样进行90天试用。