证书签名方案
使用OpenSSL制作证书其实还蛮简单的,只是证书签名的部分有一点复杂,方法有三:
- 交由受浏览器信任的第三方证书颁发机构签名;
- 自签名;
- 自制CA证书并用其签名。
对于上线运营的网站来说,第一个方案是首选,因为只有这样浏览器才不会报警。过去买证书很贵,现在倒是有免费的了,比如IE和Firefox都内置的StartSSL。
不同的证书颁发机构对于证书生成多少都会有自己的要求,所以本文主要讨论后两种方案。
自签名证书
注:下面提到的很多命令都需要一个openssl配置文件,该文件一般名为openssl.cnf。Linux里一般不用管,Windows可使用参数config指定路径,使用环境变量OPENSSL_CONF也可以。
使用如下命令即可生成自签名证书:
openssl req -x509 -newkey rsa:1024 -nodes -days 365 -out self.pem -keyout self.key
req命令表示创建证书,newkey参数表示创建私钥而不是从已存在的文件中读取,nodes参数表示不加密私钥。如果不添加nodes参数,以后每次使用私钥时都必须输入密码(如Apache每次重启)。
输入证书信息时,Common Name需要写域名,支持通配符,如*.domain.tld。
程序运行完成后,self.pem即为完成签名的证书,self.key则为私钥。
使用上述命令创建的证书只能写一个域名匹配字符串,如写了*.domain.tld之后,访问https://domain.tld仍然会报错。如果想在一个证书中指定多个域名匹配字符串,则需要打开openssl.cnf文件,在末尾处添加如下内容:
[ ca_x509v3_more_cn_ext ] nsComment="OpenSSL Generated Certificate" subjectKeyIdentifier=hash authorityKeyIdentifier=keyid:always,issuer:always basicConstraints=CA:true subjectAltName = DNS:domain.tld,DNS:*.domain.tld
将subjectAltName行修改为需要的内容后保存退出,使用如下命令重新生成自签名证书:
openssl req -x509 -newkey rsa:1024 -nodes -days 365 -out self.pem -keyout self.key -extensions ca_x509v3_more_cn_ext
自制CA证书并用其签名
如需要使用多个证书,每一个都自签名则意味着每一个都需要导入浏览器,这样就很麻烦。自制CA证书并用其签名后,无论制作了多少个证书,都只需要将自制的CA证书导入浏览器即可,相对来说方便些。
上例中用一条命令直接生成了私钥和证书,这次换个方法,分解为两步。
首先,生成自己的个人私钥:
openssl genrsa -des3 -out my.key 2048
des3参数表示使用该算法加密生成的私钥,以后每次使用私钥时都必须输入密码,去掉这个参数则不进行加密。
根据个人私钥生成自签名CA证书:
openssl req -x509 -key my.key -days 911 -new -out my.pem
输入证书信息时,Common Name可以写自己的名字。将该CA证书导入浏览器后,该名字会显示在证书管理器中。
接下来生成服务器的私钥和证书:
openssl req -newkey rsa:1024 -nodes -days 365 -out server_unsigned.pem -keyout server.key
再之后,就可以用个人证书签名服务器证书了:
openssl ca -days 365 -md sha1 -in server_unsigned.pem -out server.pem -cert my.pem -keyfile my.key
如该命令报错找不到index.txt之类的,视openssl.cnf中的配置,则需要做点准备工作:
mkdir demoCA mkdir demoCA\newcerts touch demoCA\index.txt echo 11 > demoCA\serial
index.txt为空,serial随便写一个两位的数字进去。
多个域名的支持问题,跟上面说的一样,添加extensions参数:
openssl ca -days 365 -md sha1 -in server_unsigned.pem -out server.pem -cert my.pem -keyfile my.key -extensions ca_x509v3_more_cn_ext
完成后,server.key和server.pem即为已签名的证书及私钥。如果用在Lighttpd中,将两个文件合并即可。
最后,将my.pem导入至浏览器中“受信任的根证书颁发机构”即可。
其他
如果要去掉私钥的密码保护,可以这样做:
openssl rsa -in my.key -out my_plain.key
如果需要根据私钥生成公钥,可以这样做:
openssl rsa -in my.key -pubout -out my_public.key
证书生成后,可以使用如下命令查看详细信息:
openssl x509 -fingerprint -text -in my.pem
使用证书加密信息:
openssl smime -encrypt -in ptest.txt -out etest.txt my.pem
使用私钥解密:
openssl smime -decrypt -in etest.txt -out dtest.txt -inkey my.key
若需要DER格式的证书,可使用如下命令进行转换:
openssl x509 -in my.pem -outform DER -out my.der
相关推荐
SSL证书生成软件、包括转换证书格式
描述中提到的"ssl证书制作生成工具",包括MakeCert.exe和pvk2pfx.exe,是Windows SDK中用于创建自签名证书的工具。MakeCert.exe是一个命令行实用程序,允许用户创建X.509证书,这些证书可以用于测试目的或在本地环境...
SSL证书是网络安全领域中的一个重要组成部分,它主要用于加密网络通信,确保数据在传输过程中不被窃取或篡改。本文将详细介绍“ssl证书生成图形化工具.zip”中的关键知识点,包括SSL证书、XCA工具、证书生成流程以及...
本文将详细介绍如何使用“setup_xca-1.3.2.exe”这款Windows版的SSL证书安装制作工具,以及自签发证书和公私钥的概念。 首先,让我们了解SSL(Secure Sockets Layer)证书。SSL证书是由受信任的证书颁发机构(CA)...
Java SSL证书制作工具,如Portecle,是用于创建、管理和查看数字证书的安全软件。SSL(Secure Sockets Layer)证书是网络安全的一种基础组件,广泛应用于网站加密,确保数据传输过程中的隐私性和完整性。Portecle...
ssl自制全套证书(包含服务器端、客户端、ca端的证书,格式有.crt,.key,.truststore,.keystore,.p12,.cer,.pem等类型),当时要配置webservice接口、tomca、nginx通过ssl访问的证书,弄了好久才生成了一套能使用的。...
首先,我们需要生成自签名SSL证书。这通常包括以下步骤: 1. **生成RSA密钥**:使用`openssl genrsa`命令创建一个带有密码保护的RSA私钥。例如,`openssl genrsa -des3 -out domain.key 1024`将生成一个1024位的...
### 使用OpenSSL为Apache生成SSL证书 #### 一、引言 随着互联网技术的发展与用户对数据安全意识的提升,HTTPS协议已经成为网站标配之一。HTTPS不仅能够加密传输数据,还能验证服务器身份,确保用户访问的是真实...
本篇文章将详细阐述阿里云SSL证书的两种配置方法,并附带uniapp应用的证书制作流程。 一、阿里云SSL证书的配置方法 1. **手动配置**: 手动配置适合于熟悉服务器管理的用户,通常包括以下步骤: - **购买SSL证书...
本篇文章将深入探讨如何使用开源工具OpenSSL来制作CSR(Certificate Signing Request)文件,这是申请SSL证书的第一步。 首先,了解OpenSSL。OpenSSL是一个强大的安全套接字层密码库,包含各种主要的密码算法、常用...
SSL双向认证证书制作过程流程
SSL证书是网络安全领域中至关重要的一个组成部分,全称为Secure Sockets Layer(安全套接层)证书,用于在互联网上建立安全的加密连接,确保数据在客户端和服务器之间传输时不会被窃取或篡改。SSL证书由受信任的证书...
本文档主要介绍了SSL证书卸载和SSI(Server Side Include)高级应用,涵盖了SSI的定义、使用理由、制作责任人、包含处理等方面。 什么是SSI SSI(Server Side Include)是服务器端页面包含,工作在web服务器上,...
制作SSL证书的过程主要分为以下几个步骤: 1. **生成密钥对**:首先,你需要在本地计算机上使用OpenSSL工具生成一对密钥,包括一个公钥和一个私钥。这可以通过执行以下命令完成: ``` openssl genrsa -out server...
远程服务使用已使用加密弱散列算法(例如MD2,MD4,MD5或SHA1) 签名的SSL证书链。已知这! 攻击者可以利用此方法生成具有相同数字签名的另一个证书,允许攻击者伪装成受影响的服务。 CVE-2004-7761
制作windows自签名证书所需要的工具openssl-0.9.8k_WIN32,解压后参考此篇文件进行制作:https://blog.csdn.net/u013992330/article/details/89090380
这个“pfx证书制作工具.zip”压缩包提供了帮助用户生成和管理这些证书的工具。 RSA是一种广泛使用的非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman三位科学家提出,它的核心在于有一对密钥:公钥和...
这些证书存储在用户的受信任的根证书存储区,如果一个网站的SSL证书是由一个已知的、受信任的根CA签发的,浏览器就会显示绿色锁图标,表明连接是安全的。 制作根证书成exe文件的过程主要包括以下步骤: 1. 创建根...
自签名证书是一种特殊的SSL证书,由证书所有者自行创建并签署,主要用于测试环境或内部网络中的服务认证。 本文档详细介绍了如何使用OpenSSL工具生成自签名的SSL证书,并通过一个实际操作案例进行说明。 #### 二、...