MAC申请自签名的ssl证书

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MAC申请自签名的ssl证书相关的知识,希望对你有一定的参考价值。

不建议申请自签名SSL证书,使用自签SSL证书的风险如下:
第一、被“有心者”利用。
其实“有心者”指的就是黑客。自签名SSL证书你自己可以签发,那么同样别人也可以签发。黑客正好利用其随意签发性,分分钟就能伪造出一张一模一样的自签证书来安装在钓鱼网站上,让访客们分不清孰真孰假。
第二、浏览器会弹出警告,易遭受攻击
前面有提到自签名SSL证书是不受浏览器信任的,即使网站安装了自签名SSL证书,当用户访问时浏览器还是会持续弹出警告,让用户体验度大大降低。因它不是由CA进行验证签发的,所以CA是无法识别签名者并且不会信任它,因此私钥也形同虚设,网站的安全性会大大降低,从而给攻击者可乘之机。
第三、安装容易,吊销难
自签名SSL证书是没有可访问的吊销列表的,所以它不具备让浏览器实时查验证书的状态,一旦证书丢失或者被盗而无法吊销,就很有可能被用于非法用途从而让用户蒙受损失。同时,浏览器还会发出“吊销列表不可用,是否继续?”的警告,不仅降低了网页的浏览速度,还大大降低了访问者对网站的信任度。
第四、超长有效期,时间越长越容易被破解
自签名SSL证书的有效期特别长,短则几年,长则几十年,想签发多少年就多少年。而由受信任的CA机构签发的SSL证书有效期不会超过2年,因为时间越长,就越有可能被黑客破解。所以超长有效期是它的一个弊端。

参考技术A 1、桌面创建"SSL"文件夹,用来存放申请证书过程中的所有文件。
2、打开"终端"并进入到"桌面->SSL"。

3、管理员权限(命令:sudo su)。
这个命令超级重要!重要!重要!没有在管理员权限下执行下面的操作,即使你可以完成前面几步,也会在最后一步卡住报错!!!!

4、创建rootCA.key(命令:openssl genrsa -des3 -out rootCA.key 2048)。
创建时需要输入一个密码,这个密码要记住,下一步有用。

5、使用rootCA.key创建rootCA.pem(命令:openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.pem)
创建时需要输入rootCA.key的密码。
其他信息可以随意填写。

6、双击rootCA.pem证书。在钥匙串中双击,并修改为"始终信任"该证书

7、创建v3.ext文件(命令:touch v3.ext)

8、编辑v3.ext文件(命令:sudo vim v3.ext)

将下列文字复制粘贴进去
注意最后一行,(DNS.1 = xxxxxxx)
这一行可以输入域名或IP。

9、创建server.csr和server.key(命令:openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key)
这里要注意倒数第二项,必须填自己的IP地址或域名,如果IP为动态获取的,建议先改成固定IP。

10、创建server.crt(命令:openssl x509 -req -in server.csr -CA [rootCA.pem路径] -CAkey [rootCA.key路径] -CAcreateserial -out server.crt -days 500 -sha256 -extfile v3.ext)
去掉中括号,把对应文件路径写进去。
如果你报了“Error opening CA Certificate”这个错误,请先检查路径是否正确,如果正确请检查是否执行了第三步,我就卡在这卡了一晚上~
如果一切正常会让你输入密码,输入完成后就会生成server.crt!!

最后查看SSL文件夹

忙活一晚上就是为了这个~
明天有时间的话会更新服务器部署SSL证书,敬请期待哦~

Mac OS X - 接受自签名多域 SSL 证书

【中文标题】Mac OS X - 接受自签名多域 SSL 证书【英文标题】:Mac OS X - Accept self-signed multi domain SSL Certificate 【发布时间】:2013-04-01 04:28:41 【问题描述】:

我已经使用 Keychain Access 导入了多个域(比如说 my.foo.bar.com 和 yours.foo.bar.com)的自签名证书,但 Chrome 仍然不接受它,在每个每个域的浏览会话开始时提示我进行验证。

证书是使用 x509v3 主题备用名称 扩展生成的,以验证多个域。如果我在导入证书之前导航到站点,我会收到与导入证书之后不同的警告消息。下面附上两个错误的图片(上面是导入前的错误)

有没有办法接受自签名的多域证书?顺便说一句,我只在 Chrome 中收到警告。 FF 和 Safari 工作得很好(除了那些浏览器很烂;))

更新:我尝试使用 openssl cli 和 xca GUI 生成证书

【问题讨论】:

您究竟是如何生成证书的?为什么要使用主题密钥标识符?您的意思是主题替代名称吗? 刚刚更新了我的答案。是的,以替代名称为主题。我尝试使用 openssl CLI 工具和 xca (sourceforge.net/projects/xca) 生成两者 您确定您的 SAN 属于 DNS 类型吗? (据我所知,xca 至少可以在 URI、DNS 和 IP 之间进行选择) "(上面是导入前的错误)" 可能反过来吧。 不,top 肯定是在导入之前。是的,SAN 被列为 DNS。理想情况下,我想将 SAN 指定为 、*. 等,以支持无限的子域。所有这一切都只是为了一个测试开发框,我们使用多个嵌套的子域(我讨厌,但你能做什么) 【参考方案1】:

问题在于您尝试使用的通配符过于宽泛(**.com)。

规范(RFC 6125 和 RFC 2818 Section 3.1)谈到“left-most”标签,这意味着应该有多个标签:

 1.  The client SHOULD NOT attempt to match a presented identifier in
     which the wildcard character comprises a label other than the
     left-most label (e.g., do not match bar.*.example.net).

 2.  If the wildcard character is the only character of the left-most
     label in the presented identifier, the client SHOULD NOT compare
     against anything but the left-most label of the reference
     identifier (e.g., *.example.com would match foo.example.com but
     not bar.foo.example.com or example.com).

我不确定是否有规范说明应该有多少个最小标签,但Chromium code 表示必须至少有 2 个点:

我们需要至少 3 个组件(即 2 个点)作为基本保护 反对过于宽泛的通配符。

这确实是为了防止像*.com 这样过于宽泛的情况。这可能看起来不方便,但 CA 偶尔会犯错误,并且采取措施防止颁发给*.com 的潜在流氓证书发挥作用并不一定是坏事。 如果我没记错的话,一些实现比这更进一步,并且列表域对于二级域来说也太宽泛了(例如.co.uk)。

关于您的第二个示例:“CN:bar.com, SANs: DNS:my.foo.bar.com, DNS:yours.foo.bar.com”。此证书应该对my.foo.bar.comyours.foo.bar.com 有效,但对bar.com 无效。当没有 SAN 时,CN 只是一种备用解决方案。如果有任何 SAN,则应忽略 CN(尽管某些实现会更宽容)。

【讨论】:

啊,很好的答案!我不知道 CN 是没有 SAN 的后备方案。感谢所有的来回。我会在这里检查一下,一旦我得到它的工作就接受。 唉,还是没有爱。所以我将 CN 设置为 .example.com,将 SAN 设置为“DNS:.example.com, DNS:*.*.example.com”,当我点击 foo.bar 时。 example.com 它警告说它被标识为 *.example.com。我是否需要提供 CN? 我猜.example.com*.example.com 错字是由于评论格式。您只能使用一个通配符:最左边的标签。如果您想要foo.bar.example.com 的东西,请尝试*.bar.example.com(当然也可以直接尝试foo.bar.example.com)。 是的,抱歉,没有看到 SO 格式去掉了我的星号。啊,那可能是我的问题。我敢打赌,唯一的通配符就是让我沉沦的原因。好的,我稍后再试一次 仍在解决一些怪癖,但似乎多个通配符确实是问题所在。您介意更新您的答案以包含它,我会接受吗?感谢您的所有帮助!

以上是关于MAC申请自签名的ssl证书的主要内容,如果未能解决你的问题,请参考以下文章

怎样的ssl证书才能被信任?

倒腾HTTPSNginx for Docker自签名SSL证书

Spring Boot如何配置SSL实现https协议

如何添加自签名SSL证书 自签名SSL证书存风险

自己生成的SSL证书与购买的SSL证书有啥区别?

https一定是安全的吗