首页 > 其他分享 >什么是自签名证书?以及如何创建它

什么是自签名证书?以及如何创建它

时间:2022-11-29 17:39:24浏览次数:68  
标签:私钥 证书 创建 servername SSL 签名 key

自签名 SSL 证书是一种数字证书,未经公开信任的​​证书颁发机构 (CA)​​ 签名。自签名证书被认为不同于传统的 CA 签名证书,因为它们是由负责与证书关联的网站或软件的公司或开发人员创建、颁发和签名的,而不是 CA。

在高层次上,这些自签名证书基于与 X.509 证书中使用的相同的加密私钥和公钥对体系结构。但是,这些数字证书没有受信任的第三方 CA 的验证,例如 ​​WoTrus​ 。发行过程中缺乏独立验证会产生额外的风险,这就是自签名证书的问题。对于面向公众的网站和应用程序,它们被认为是不安全的。

此证书类型的用途

尽管它们可能存在风险,但自签名证书确实有其用途。最主要的是,它们是免费提供的,任何开发人员都可以轻松请求。它们能够按照您自己的时间表实施,并且通常用于内部测试环境或 web 服务器,否则这些环境将被锁定到外部用户。

此外,组织受益于知道自签名 SSL 证书使用与其他付费 SSL/TLS 证书相同的方法加密适用的传入和传出数据。

按照 CA 证书的要求,自签名证书不会在设定的时间段后过期或需要续订。虽然这看起来很方便,但这是此选项的主要问题之一,因为它们无法遵守安全更新以响应已发现的漏洞,也无法满足保护当今现代企业所需的证书敏捷性。因此,很少推荐这种身份验证方法。

此外,自签名证书无法撤销证书,如果证书被遗忘或保留在对恶意行为者开放的系统上,这会将用于外部威胁的密码暴露出来。不幸的是,即使如此,一些 IT 部门仍认为证书颁发机构颁发证书的成本超过了额外验证和支持所降低的风险。

与自签名证书相关的风险和问题

有许多与自签名 SSL 证书相关的安全警告。每当用户访问使用此证书类型的站点时,他们将立即收到安全弹出警告提示,其中显示诸如“error_self_signed_cert”或“err_cert_authority_invalid”之类的错误,要求用户确认他们是否愿意继续。这些错误是由用户的浏览器而不是网站本身提示的,这增加了他们关注的额外合法性,同时引入了访问网站的额外步骤。现代 Web 浏览器都不信任自签名证书,并且不会显示域名的挂锁符号或 HTTPS 状态。

这些警告会给网站访问者带来恐惧和不安。他们给人的印象是该网站可能会受到威胁,并且该网站可能无法正确保护他们的数据。访问者会受到诱惑而避开这些网站并访问在访问时不提示安全警告的竞争对手。

可以理解的是,访问者不太可能在他们信任的网络浏览器告诉他们可能缺乏适当的安全措施的网站上共享任何个人或机密信息。这种谨慎是有充分理由的,因为自签名证书可能会被利用。一种流行的方法是中间人攻击,它允许看到通过 TLS/SSL 协议共享的数据,从而使访问者面临身份盗用和系统入侵。

通过选择这种类型的 SSL 证书,您实际上是在靠自己。这意味着您没有受信任的证书颁发机构的支持,也没有应用最新的加密方法来确保对数据、设备和应用程序进行正确的身份验证和加密。

我应该使用这种类型吗?

如前所述,使用自签名证书会带来很多风险,尤其是在面向公众的情况下。对于任何处理任何私人信息(包括健康、税务或财务记录)的网站来说,它们都具有难以置信的风险。暴露此信息不仅会损害品牌信任,而且会因适用隐私法规的罚款和处罚而对组织造成经济损失。

许多人认为在员工门户或通信站点等区域部署时,在内部使用自签名证书不会带来风险,但事实并非如此。它们仍然会导致浏览器和安全警告。由于可以忽略这些警告,组织通常会指示其员工这样做。内部站点的安全是有保证的,所以这直接带来的危害不大。但是,这可能会无意中导致员工习惯于忽略这些类型的警告。这种类型的行为可能会使组织面临更大的风险和漏洞机会。

如何创建证书

由于涉及安全风险,不建议设置自签名证书,但设置配置文件和完成颁发过程非常简单,具体取决于您的环境,例如 Apache 或 Ubuntu Linux 服务器。

生成私钥

要创建 SSL 证书,需要私钥文件和证书签名请求 (CSR)。该过程从向您的 CA 请求私钥开始。私钥是使用 RSA 和 ECC 等算法生成的加密密钥。 RSA 密钥是用于此过程的最古老的加密系统之一,并受到许多计划的支持。

虽然不推荐使用自签名证书,但这里有一个使用以下命令生成密钥的代码示例:

openssl genrsa -aes256 -out servername.pass.key 4096

该命令将提示您输入密码。如果出于任何原因需要吊销证书,CA 可以使用密码来验证证书所有者。

生成 CSR

生成后,您的私钥文件现在将作为 servername.key 位于您当前的目录中,并将用于生成您的 CSR。以下是自签名证书的证书签名请求的代码示例:

openssl req -nodes -new -key servername.key -out servername.csr

然后,您需要输入几条信息,包括组织、组织单位、国家/地区名称、州、地区和通用名称。通用名称通常是该位置的域名 (dns) 或 IP 地址。

输入此信息后,servername.csr 文件将与 servername.key 私钥文件一起位于当前目录中。

颁发证书

最后,从 server.key(私钥文件)和 server.csr 文件生成一个新证书 (.crt)。生成的证书可以是根证书或中间证书,具体取决于您对信任链的应用。以下是生成新证书的命令示例:

openssl x509 -req -sha256 -days 365 -in servername.csr -signkey servername.key -out servername.crt

与上一步类似,它的 servername.crt 文件将在当前目录中找到。

同样,自签名证书在任何环境中部署时都会产生重大风险,因此不建议使用此方法。访问 WoTrus以了解有关受信任的 SSL/TLS 证书和其他类型的数字证书的更多信息。

标签:私钥,证书,创建,servername,SSL,签名,key
From: https://blog.51cto.com/u_15078048/5896032

相关文章

  • 《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器
    文章目录3.Docker常用命令3.1帮助启动类命令3.2镜像命令3.3有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)3.4容器命令3.4.1新建+启动容器3.4.2列出当......
  • 什么是自签名证书?以及如何创建它
    自签名SSL证书是一种数字证书,未经公开信任的证书颁发机构(CA)签名。自签名证书被认为不同于传统的CA签名证书,因为它们是由负责与证书关联的网站或软件的公司或开发人......
  • 多线程的创建(继承Thread类)
    多线程的创建方式一:继承Thread类Java是通过java.lang.Thread类来代表线程的。按照面向对象的思想,Thread类应该提供了实现多线程的方式。步骤:定义一个子类MyThread继承......
  • Mysql:创建索引和删除索引
    创建索引的方式创建表时,创建索引在已存在的表,创建索引创建表添加索引添加普通索引、唯一索引、主键索引、联合索引、全文索引CREATETABLE`kuajing_oms`.`cc_bill_......
  • Xcode 14签名问题
    升级Xcode14版本后,打包报错,提示签名相关问题。1、对于cocoapods管理的三方库,设置不签名即可,podfile中,添加下述代码:`post_installdo|installer|installer.pods_projec......
  • 为什么移动APP应用程序需要SSL证书?
    在谈论SSL/TLS证书时,人们通常是考虑到WordPress或是其他桌面网站的安全问题。然而,移动应用程序安全性也需要得到同等重视。为什么需要重视移动应用程序安全?根据互联网监......
  • linux中使用docker创建redis容器镜像
    redis也是一种数据库,创建过程基本与mysql容器差不多,不过语法上稍有不同cd/rootmkdirredisdockersearchredisdockerpullredisdockerimagesdockerrun-p638......
  • 创建可引导的 macOS 安装器
    创建可引导的macOS安装器,从苹果官网复制,命令记不住,写在博客里只是方便自己,不用每次都要去翻官网看。macOS  最新版本macOSVentura         13.0.1macOSMo......
  • sql server 生成自签名证书
    生成证书的步骤1,cd到C:\ProgramFiles(x86)\WindowsKits\8.0\bin\x64 2,执行命令:makecert-r-pe-svc:\test.pvk-n"CN=DESKTOP-0T8FP81"-b01/01/2000-e01/01/20......
  • 对于证书的理解
    对于证书的理解证书类型-X.509证书PEMDER(二进制)--编码格式CRTCERPEM--拓展名用途及作用流程加密传输,例如https作用流程HTTPS使用的是对称......