在计算机领域,OpenSSL是一个广泛使用的开放源代码的安全套接字层(SSL)协议库。它允许应用程序进行安全通信,防止窃听,并验证连接方的身份。OpenSSL主要应用于互联网的网页服务器上。
以下是一些与OpenSSL相关的关键词:
- CSR:证书签名请求文件,用于申请证书的前置条件。
- CRT:证书,由CA颁发的数字证书,用于证明服务器的身份。
- key:私钥,用于加密和解密数据。
OpenSSL的核心功能是通过加密传输时的数据来保证信息不被非法窃取,保护用户隐私。要使用OpenSSL,首先需要下载并安装它。在Linux系统中,可以通过以下命令下载并安装OpenSSL:
```bash
openssl下载–linux版
```
安装完成后,可以通过启动脚本来启动OpenSSL:
```bash
C:\Users\Gavin>start.bat
```
接下来,我们需要在D盘的key文件夹下生成一个密钥文件。可以使用以下命令生成私钥:
```bash
C:\Users\Gavin>openssl genrsa -des3 -out d:/key/server.key Enter PEM pass phrase: Verifying - Enter PEM pass phrase:
```
然后,使用私钥创建待签名的证书,即公钥:
```bash
C:\Users\Gavin>openssl.exe req -new -key d:/key/server.key -out d:/key/pub.csr
```
接下来,依次输入国家、地区、城市、组织、组织单位、Common Name和Email。如果要支持HTTPS,Common Name应该与域名保持一致,否则会引起浏览器警告。最后,生成的文件如下:
```bash
C:\Users\Gavin>openssl.exe req -text -in d:/key/pub.csr -noout
```
至此,申请证书的准备工作已经完成。接下来,我们可以自建CA(证书颁发机构)。首先创建CA密钥:
```bash
C:\Users\Gavin>openssl.exe genrsa -out D:/key/gavinca.key 2048 #默认长度也是2048
```
然后生成CA待签名证书:
要生成CA根证书,您可以使用OpenSSL工具。请按照以下步骤操作:
1. 打开命令提示符或终端。
2. 使用以下命令创建一个新的证书签名请求(CSR):
```plaintext
C:\Users\Gavin>openssl.exe req -new -key d:/key/gavinca.key -out d:/key/gavinca.csr
```
3. 在接下来的提示中,输入相关信息以完成CSR的创建。这些信息包括国家代码、州/省名称、城市名称、组织名称等。如果某些字段没有提供值,可以保留为空。例如:
```plaintext
You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank.
----- Country Name (2 letter code) [AU]:cn State or Province Name (full name) [Some-State]:cn Locality Name (eg, city) []:cn Organization Name (eg, company) [Internet Widgits Pty Ltd]:cn Organizational Unit Name (eg, section) []:cn Common Name (e.g. server FQDN or YOUR name) []:cn Email Address []:cn Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:cn An optional company name []:cn
```
4. 在完成CSR的创建后,您需要使用私钥对它进行签名以生成CA根证书。请运行以下命令:
```plaintext
C:\Users\Gavin>openssl.exe ca -config
```
请注意,您需要将`
Users\Gavin> opensslexe x509 -req -in d:/key/gavinca.csr -extensions v3_ca -signkey d:/key/gavinca.key -out d:/key/gavinca.crt Warning: ignoring -extensions option without -extfile Certificate request self-signature ok subject=CN = cn, ST = gavin, L = cn, O = future, OU = cn, CN = cn, emailAddress = cn
实际上,我们的证书不需要存储到本地计算机,而是在浏览器的存储区会有相应的证书。以Edge为例,可以通过以下步骤进行设置和管理证书:
设置 -> 管理证书
所以,HTTPS的加密传输需要网站支持并申请CA证书。下面是申请CA证书的步骤:
1. 生成自己的私钥
2. 根据私钥生成公钥
生成该公钥需要携带一些信息。
3. 申请CA证书
模拟HTTPS加密流程:准备好密钥及证书。
服务器端准备:准备一个私钥。
```plaintext
C:\Users\Gavin>openssl genrsa -des3 -out d:/key/server.key Enter PEM pass phrase: #加密server.key Verifying - Enter PEM pass phrase:
```
根据私钥生成一个公钥,即待签名的证书。
```
C:Users\Gavin>openssl req -new -key d:/key/server.key -out d:/key/pub.csr
Enter pass phrase for d:/key/server.key: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank. For some fields there will be a default value. If you enter '.', the field will be left blank.
Country Name (2 letter code) [AU]:CN State or Province Name (full name) [Some-State]:SD Locality Name (eg, city) []:YTL Organization Name (eg, company) [Internet Widgits Pty Ltd]:YTL Organizational Unit Name (eg, section) []:YTL Common Name (e.g. server FQDN or YOUR name) []:TYL Email Address []:12345678@YTL.COM
Please enter the following extra attributes to be sent with your certificate request A challenge password []:1234 An optional company name []:YTL
```
请注意,生成的证书尚未获得认证,因此可能无效且不受信任。要使其有效,您需要对其进行签名,而无需依赖大型机构来认证。以下是CA认证和证书申请(CSR)过程的概述:
1. 准备CA的密钥:
```markdown
C:\Users\Gavin>openssl.exe genrsa -out d:/key/serverca.key 2048
```
2. 生成待签名的证书公钥:
使用您的私钥对CSR进行签名。首先,创建一个包含您想要使用的密钥和其他相关信息的CSR文件。然后,使用以下命令对其进行签名:
```markdown
C:\Users\Gavin>openssl.exe req -new -key d:/key/serverca.key -out server_ca.csr
```
3. 将签名后的证书颁发给您的客户端:
使用您的私钥对服务器证书进行签名。首先,使用以下命令从CSR文件中提取信息:
```markdown
C:\Users\Gavin>openssl.exe x509 -in server_ca.csr -text -noout
```
提取的信息将用于创建服务器证书。然后,使用以下命令对证书进行签名:
```markdown
C:\Users\Gavin>openssl.exe x509 -req -days 3650 -in server_ca.csr -CAkey d:/key/client.crt -CAcreateserial -extfile extfile.cnf -extensions v3_ca -out server.crt
```
其中,`extfile.cnf`是一个包含证书颁发者、主题等信息的配置文件。例如:
```markdown
[ v3_ca ]
default_md = sha256
prompt = no
email_in_dn = no
policy = policy_match
countryName = Country Name (2 letter code)
stateOrProvinceName = State or Province Name (full name)
localityName = Locality Name (eg, city)
organizationName = Organization Name (eg, company)
organizationalUnitName = Organizational Unit Name (eg, section)
commonName = Common Name (e.g. server FQDN or YOUR name)
emailAddress = emailAddress
IPAddress = IP Address
DNSName = DNS Name (FQDN or server name) (eg, www.example.com)
```
4. 将颁发给客户端的证书添加到您的Web服务器配置中。具体操作方法取决于您使用的Web服务器软件。
请根据以下内容完成重构,并保持段落结构:
C:\UsersGavin> openssl.exe req -new -key d:/key/serverca.key -out d:/key/serverca.csr
您将被要求输入一些信息,这些信息将包含在您的证书请求中。您即将输入的内容被称为“可分辨名称”(Distinguished Name,简称DN)。尽管有许多字段,但您可以保留一些为空。对于某些字段,将有一个默认值。如果您输入“.”,则该字段将留空。
----- Country Name (2 letter code) [AU]:USA
String too long, must be at most 2 bytes long
Country Name (2 letter code) [AU]:UK
State or Province Name (full name) [Some-State]:LD
Locality Name (eg, city) []:LD
Organization Name (eg, company) [Internet Widgits Pty Ltd]:LD
Organizational Unit Name (eg, section) []:LD
Common Name (e.g. server FQDN or YOUR name) []:KD
Email Address []:LDLDKD@haha.com
Please enter the following 'extra' attributes to be sent with your certificate request:
A challenge password []:1234
An optional company name []:LD
以下是重构后的内容:
```
C:\Users\Gavin>openssl.exe x509 -req -in d:/key/pub.csr -extensions v3_req -signkey d:/key/serverca.key -out d:/key/server.crt
Warning: ignoring -extensions option without -extfile
Certificate request self-signature ok
subject=C = CN, ST = SD, L = YTL, O = YTL, OU = YTL, CN = TYL, emailAddress = 12345678@YTL.COM
#x509 协议 ,days 有效期 -req 请求 ---即由服务器的公钥要经过ca的私钥serverca.key ca公钥(证书) 认证(加密/解密)生成 经过认证的证书
再看CA颁发的证书—即服务器证书经过CA认证后的
有了证书之后,还需要注册到系统中
安装证书即可;
再次查看证书状态
至此证书申请和认证完毕;
https 加密的使用
注意:Common Name,可以写自己的名字或者域名,如果要支持https,Common Name应该与域名保持一致,否则依旧会引起浏览器警告。
CA证书的应用---->> 如果网站要对外提供服务就需要对网站进行认证
```