pageid: 12

X.509证书包含三个文件:

  • key 是服务器上的私钥文件:用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密;
  • csr 是证书签名请求文件:用于提交给证书颁发机构(CA)对证书签名
  • crt 是由证书颁发机构(CA)签名后的证书或者是开发者自签名的证书:包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息

备注:在密码学中,X.509是一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。

自签名SSL证书生成流程

方式1.脚本生成即一键生成自签名SSL证书和私钥
脚本地址: https://github.com/cookcodeblog/OneDayDevOps/blob/master/components/ssl/create_self_signed_cert.sh
Syntax:

1
./create_self_signed_cert.sh "/C=CN/ST=Chongqing/L=WeiyiGeek/O=xdevops/OU=WeiyiGeek/CN=gitlab.WeiyiGeek.top"


方式2.OpenSSL生成自签名SSL证书
描述:适用于安装了OpenSSL的服务器或者Linux;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 1.验证OpenSSL版本
openssl version || apt install openssl -y


# 2.生成私钥(需输入4位以上密码)
# genra 生成RSA私钥
# -des3 des3算法
# -out server.key 生成的私钥文件名
# 2048 私钥长度
openssl genrsa -des3 -out server.pass.key 2048


# 3.去除私钥中的密码
# 注意:有密码的私钥是server.pass.key,没有密码的私钥是server.key
openssl rsa -in server.pass.key -out server.key


# 4.生成CSR(证书签名请求)
# req 生成证书签名请求
# -new 新生成
# -key 私钥文件
# -out 生成的CSR文件
# -subj 生成CSR证书的参数
openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Chongqing/L=WeiyiGeek/O=xdevops/OU=WeiyiGeek/CN=gitlab.WeiyiGeek.top"


# 5.生成自签名SSL证书
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt


# 6.采用合并的方式获得pem格式证书
cat server.crt server.key > server.pem

在服务端配置SSL常规流程:

  • 1.声明开启HTTPS (SSL认证)
  • 2.声明侦听443端口(并确保已在防火墙上打开443端口)
  • 3.复制已签名的SSL证书和私钥到指定位置,并设置正确的文件权限
  • 4.配置已签名的SSL证书(.crt)的位置
  • 5.配置已签名的SSL证书私钥(.key)的位置
  • 6.配置将HTTP请求都重定向到HTTPS

在浏览器中访问

在浏览器中打开https://<domain_name>来访问。

在Firefox浏览器中可以添加Security Exception来忽略HTTPS错误警告。

Chrome浏览器可以尝试通过导入CA证书的方式来忽略HTTPS错误警告。

注意:Chrome浏览器可能有导入CA证书后仍然无法访问的问题;

总结

  • 1.自签名的SSL证书存在安全隐患,在生产环境上需要购买和使用经权威机构认证和办法的证书。
  • 2.不同浏览器对自签名SSL证书的检查和限制也有所区别。

-subj 参数说明如下:

1
2
3
4
5
6
7
字段	字段含义	示例
/C= Country 国家 CN
/ST= State or Province 省 Chongqing
/L= Location or City 城市 Guangzhou
/O= Organization 组织或企业 WeiyiGeek
/OU= Organization Unit 部门 WeiyiGeek
/CN= Common Name 域名或IP gitlab.WeiyiGeek.top