最近有看到很多人问一些与自签名证书相关联的问题。
类似于自签名证书可以防止中间人攻击吗?
自签名证书会导致浏览器显示弹窗吗?
自签名证书为什么就不受信任呢?
诸如此类的问题,今天就自签名证书带大家详细了解一下自签名SSL证书的一些详细信息吧。
首先,自签名证书是一种由自己创建和签名的数字证书,用于验证和加密网络通信。与传统的CA(证书颁发机构)签名证书不同,自签名证书没有经过第三方机构的验证和认证。
其中包含如下几大点信息条件:
1.证书的拥有者信息和标识信息
2.公钥:用于加密数据以及解密数据的工具代码。
3.签名:由对应证书的拥有者手中的私钥对证书进行签名,用以确保证书的完整性和真实性。
这三点缺一不可。
那么自签名证书要如何进行创建呢?
1.生成对应的密钥对:生成相对应的公钥及私钥,其中私钥信息应当由需要安装部署证书的一方保存,而公钥是对外公开展示的。
2.创建证书请求:使用生成的密钥对创建一个证书请求(CSR),其中包含证书的主题信息。
3.签名证书:使用私钥对证书请求进行签名,生成自签名证书。
4.安装证书:将自签名证书安装到服务器或应用程序中,以便在网络通信中使用。
具体创建过程如下:
虽然自签名证书存在一定的安全隐患,但有它的优势,这里给大家分享一下创建自签名证书的方法。其实,创建自签名SSL证书很简单,主要取决于您的服务器环境,如Apache或Linux服务器。方法如下:
1、生成私钥
要创建SSL证书,需要私钥和证书签名请求(CSR)。您可以使用一些生成工具或向CA申请生成私钥,私钥是使用RSA和ECC等算法生成的加密密钥。生成RSA私钥的代码示例:openssl genrsa -aes256 -out servername.pass.key 4096,随后该命令会提示您输入密码。
2、生成CSR
私钥生成后,您的私钥文件现在将作为 servername.key 保存在您的当前目录中,并将用于生成CSR。自签名证书的CSR的代码示例:openssl req -nodes -new -key servername.key -out servername.csr。然后需要输入几条信息,包括组织、组织单位、国家、地区、城市和通用名称。通用名称即域名或IP地址。
输入此信息后,servername.csr 文件将位于当前目录中,其中包含 servername.key 私钥文件。
3、颁发证书
最后,使用server.key(私钥文件)和server.csr 文件生成新证书(.crt)。以下是生成新证书的命令示例:openssl x509 -req -sha256 -days 365 -in servername.csr -signkey servername.key -out servername.crt。最后,在您的当前目录中找到servername.crt文件即可。
自签名证书的优势在哪儿呢?
1.首先最直观的优势就是免费,不要钱。任何开发人员都可以申请。
2.随时都可以签发,不用等待第三方证书颁发机构的验证和签发。
3.同样拥有加密数据传输的功能
4.没有时效性,不存在证书有效期、或者是CA机构颁布证书在一段时间后会过期,还需要续订。
虽然自签名证书看起来很方便,但这也是这些证书的主要问题之一,因为它们无法满足针对发现的漏洞进行安全更新,也不能满足当今现代企业安全所需的证书敏捷性。因此,很少人使用自签名SSL证书。此外,自签名证书无法撤销证书,如果证书被遗忘或保留在恶意行为者开放的系统上,则会暴露所使用的加密方法。
所以对于各位用户来说,还是不推荐大家使用自签名证书。如果单纯的因为预算问题致使各位需要用到免费证书的话,还是建议各位使用受信任的CA机构的免费证书,而非自签名证书。JoySSL目前提供基础的免费版证书以及安全等级更高的付费证书,基本可以满足各位对于证书的所有需求,可以先向JoySSL官网工作人员发送自己需要保护的域名,提交自己所需要的证书类型,注册时填写230912即可申请免费证书使用。
可以用于单域名、多域名、通配符皆可免费使用。
配合操作域名解析申请,不会操作的话也会有工作人员协助安装部署。
安装好证书后即可完美实现https。