SSL证书是网站安全的基石,为了保证网站数据传输的安全性,需要使用SSL证书。而在实际项目中,通常选用 openssl 命令来生成 SSL 证书。通过 openssl 生成 SSL 证书可以提高网站的安全性和用户的信任度。在下面的内容中,我们将对 openssl 证书的生成流程进行一一介绍。
第一步:生成私钥
在使用 openssl 生成 SSL 证书之前,我们需要先生成私钥。可以使用如下命令行来生成私钥:
```
openssl genrsa -out key.pem 1024
```
在这个命令中,我们使用了 genrsa 子命令,并且设置了输出文件的名称,以及私钥的长度为 1024。运行此命令会在当前文件夹中生成一个 key.pem 文件,这个文件就是我们所需要的私钥文件。
第二步:生成证书请求
有了私钥之后,我们就可以生成证书请求了。在使用 openssl 生成证书请求时,可以按照以下命令行来执行:
```
openssl req -new -key key.pem -out csr.pem
```
在这个命令中,我们使用 req 子命令,并且按照要求设置了私钥和输出文件名。在生成证书请求时,需要输入一些信息,比如你的城市,国家等信息,请根据需求填写相应的信息。
第三步:签名证书请求
生成证书请求后,我们需要将证书请求发送给证书颁发机构进行签名。为了在服务器上轻松地创建自签名的 SSL 证书,我们可以使用类似如下的命令或使用 CA 来签署证书请求:
```
openssl x509 -req -in csr.pem -out cert.pem -signkey key.pem -days 365
```
在这个命令中,我们使用了 x509 命令,并且指定了证书请求文件名和输出文件名。我们还使用了 -signkey 选项来指定要使用的私钥文件,以便签署证书。再需要指定 -days 选项均是附带了,控制证书的有效期。
这些选项组合将使用我们之前生成的私钥来签署证书请求,并将其输出到我们指定的文件 cert.pem 中。
第四步:配置服务器
在拥有 SSL 证书之后,我们需要将其配置到服务器当中。不同的 Web 服务器和操作系统可能需要不同的配置方式。在这里以 Nginx 服务器作为例子,以简单介绍如何启用 HTTPS。
首先,请将服务器的私钥和证书文件(key.pem 和 cert.pem)上传到服务器上。
然后,请在 Nginx 的配置文件中添加以下内容:
```
server {
listen 443;
server_name your-domain.com;
ssl on;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
# other server configurations…
}
```
其中,在 ssl_certificate 中指定证书文件的路径(cert.pem),在 ssl_certificate_key 中指定私钥文件的路径(key.pem)。之后重启 Nginx 服务器即可启用 HTTPS。
在实际项目中,使用 openssl 工具来生成 SSL 证书是常见的一个方法。通过以上的介绍,大家可以了解到 openssl 证书的生成步骤,并能够轻松地将证书配置到自己的 Web 服务器上,确保网站的数据传输安全,提升用户的信任度。
互亿无线竭力为您提供全面的SSL证书解决方案,守护您网站的安全与信誉。我们为您提供多样性的SSL证书类型,包括DV(域名验证)、OV(组织验证)和EV(扩展验证)证书,满足您多方面的安全需求。我们提供多元化的证书类型,包括单域名、多域名和通配符证书。以满足您的网站架构需求。我们与全球证书品牌,包括Globalsign、DigiCert、Entrust、RapidSSL、Sectigo等建立了密切的合作关系,确保您获得优质的SSL证书。
一站式SSL证书购买方案 |
|
享受快速签发的SSL证书 |
|
为您提供高性价比的SSL证书价格方案 |
|
我们提供一站式的SSL证书服务 |
步骤1:生成私钥
一般来说,我们使用openSSL工具来生成RSA私钥。
说明:生成rsa私钥,des3算法,2048强度,server.Key是一个秘密文件名。
注:通常需要至少4位的密码才能生成私钥。
步骤2:在CSR生成私钥之后,这时就可以创建csr文件了。
这个时候可以有两种选择。理想情况下,证书可以发送给证书颁发机构(SSL证书申请),签名证书会在CA验证申请人身份后出具。
说明:国家、地区、城市、组织、组织单位、CommonName、CommonName、Email。CommonName可以写下自己的名字或域名,如果要支持https,CommonName应与域名一致,否则会引起浏览器警告。
步骤3:删除私钥中的密码
在创建私钥的第一步中,必须指定密码。但是,这个密码通常会有副作用。这个副作用是Apache每次启动Web服务器都要求重新输入密码,非常不方便。删除私钥中的密码,操作如下:
cpserver.keyserver.key.org
openSSLrsa-inserver.key.org-outserver.key
步骤4:生成自签证书
假如你不想花钱让CA签名,或只是测试SSL的具体实现。现在就可以开始生成SSL证书了。
值得注意的是,在使用自签临时证书时,浏览器会提示证书的颁发机构不得而知。
注:crt上有证书持有人信息、持有人公钥、签名人签名等信息。如果用户安装了这个证书,说明大家都信任这个证书,所以也会有公钥,比如服务器认证,客户端认证,或者签其他证书。
步骤5:安装私钥和证书
将私钥和证书文件复制到Apache的配置目录中,在Mac10.10系统中,将其复制到/etc/apache2/目录就可以了。然后生成SSL证书的步骤就结束了。
国内SSL证书市场上有很多品牌,但如果证书安全且不贵的品牌可能不多。建议您关注Positive,RapidSSL,这些证书品牌,如JoySSL。一般而言,价格并不昂贵,而且这些都是由全球权威机构签发的,证书兼容性好,全球可信。
JoySSL证书价格优惠,产品安全可信。它提供各种免费的SSL证书,包括单域名、多域名、通配符等。用户可以在购买前申请体验试用。
SSL证书格式主要是公钥证书格式标准X.PEM和DER定义在509中、PKCS中定义PKCS#7和PKCS#12、Tomcat专用JKS。SSL证书的常见格式及转化方法如下:
常见的SSL证书格式
DER:DistinguishedencodingRules缩写,二进制编码的证书格式,相当于PEM格式的二进制版本,证书后缀有:.DER.CER.CRT,Java平台主要用于Java平台
PEM:PrivacyEnhancedMail的缩写,Base64编码的证书格式,是将Base64二进制版本编码后,以“—–BEGIN开头,“……”—–END结尾。证书的后缀有:.PEM.CER.CRT,主要用于Apache和Nginx。
PKCS#7:PKCS(Public-KeyCryptographyStandards)PKCS标准中的PKCS#7(CryptographicMessageSyntaxStandard)。它不包含私钥,单独存储证书链和用户证书。证书后缀如下:.P7B.P7C.SPC,主要用于Tomcat和Windowsserver。
PKCS#12:PKCS(Public-KeyCryptographyStandards)PKCS#12标准PKCS#(PersonalInformationExchangeSyntaxStandard)。它包含私钥、证书链、用户证书和密码。证书后缀有:.P12.PFX,主要用于Windowsserver。
JKS:JavaKeyStore缩写,包含私钥、证书链、用户证书,并设置密码。证书后缀为.jks。主要用于Tomcat。
SSL证书格式转换方法
Webtrust认证的CA机构颁发的证书通常只提供PEM格式或PKCS#7格式。如果需要其他证书格式,可以使用以下常用方法进行格式转换。
使用OpenSSL、Keytool转化
1.pem转换pfx
openssl pkcs12 -export -in 'test.pem' -inkey 'test.key' -out 'test.p12' -passout pass:123456
2.pem转换jks
openssl pkcs12 -export -in 'test.pem' -inkey 'test.key' -out 'test.p12' -passout pass:123456
keytool -importkeystore -srckeystore 'test.p12' -srcstoretype PKCS12 -destkeystore 'test.jks' -srcstorepass 123456 -deststorepass 123456
3.pfx转换pem
openssl pkcs12 -in test.p12 -passin pass:123456 -out test3.pem -nodes
4.pfx转换jks
keytool -importkeystore -srckeystore 'test.p12' -srcstoretype PKCS12 -destkeystore 'test.jks' -srcstorepass 123456 -deststorepass 123456
5.jks转换pem
keytool -importkeystore -srckeystore 'test.jks' -srcstoretype jks -destkeystore 'test.p12' -deststoretype PKCS12 -srcstorepass 123456 -deststorepass 123456
openssl pkcs12 -in test.p12 -passin pass:123456 -out test3.pem -nodes
6.jks转化pfx
keytool -importkeystore -srckeystore 'test.jks' -srcstoretype jks -destkeystore 'test.p12' -deststoretype PKCS12 -srcstorepass 123456 -deststorepass 123456SSL
1.DES对称加密算法
DES加密算法于1976年推出,是最古老的加密方法之一。DES将64个纯文本数据块分为两个单独的32个块,并对每个块进行加密,从而将明文数据的64个块转换为密文。
由于DES已经被许多安全人员破解,它不再被使用,并于2005年正式被废弃。DES最大的缺点是加密钥长度短,易于暴力破解。
2.3DES加密算法
3DES是DES算法的升级版本,在20世纪90年代末投入使用。3DSE算法在每个数据块中三次使用,比DES更难破解。但与DES一样,研究人员也在3DES算法中发现了严重的安全漏洞,这使得美国标准技术研究所在2023年后宣布废除3DES算法。
3.AES对称加密算法
AES是DES算法的替代品,也是最常用的加密算法之一。与DES不同,AES是由不同密钥长度和组大小的密码组成的一组分组密码。AES算法首先将明文数据转换为块,然后用密钥加密,AES密钥长度为128、192或256位,数据分组加密解密128位,安全性要高得多,目前广泛应用于金融、在线交易、无线通信、数字存储等领域。
4.RSA非对称算法
RSA是在1977年发明的,是目前使用最广泛的非对称算法,其安全性是基于它所依赖的素数分解。根据数论,寻找两个素数相对简单,但将其乘积因式分解极其困难,因此乘积公开可以作为加密密钥。事实证明,今天的超级计算机很难破解RSA算法。2010年,一组研究人员模拟破解768位RSA算法,发现使用超级计算机至少需要1500年才能破解。目前,RSA普遍使用2048位密钥,因此破解难度可想而知。因此,RSA算法从提出到现在已经近30年了,经历了各种攻击的考验,逐渐被人们接受,普遍认为是目前最好的公钥方案之一。
5.ECC非对称加密算法
ECC又称椭圆曲线加密算法,是一种基于椭圆曲线数学理论的非对称加密算法。与RSA相比,ECC可以使用较短的密钥来实现与RSA相同甚至更高的安全性。根据目前的研究,160位ECC加密安全性相当于1024位RSA加密,210位ECC加密安全性相当于2048位RSA加密。较短的密钥只需要较少的网络负载和计算能力,因此在SSL证书中使用ECC算法可以大大降低SSL握手时间,缩短网站响应时间。
6.SM2加密算法
SM2是中国国家密码管理局于2010年发布的基于椭圆曲线密码的公钥密码算法标准。SM2是ECC256位的一种,其密钥长度为256bit,包括数字签名、密钥交换和公钥加密,用于替换RSA/DH/ECDSA/ECDH等国际算法。SM2的安全强度高于RSA2048位,而且运算速度更快,因此广泛应用于CFCA等国密证书中。
150,000家
企业客户
21年
行业经验
2V1
2对1客户支持