linux服务器手动生成安全的ssl证书

打印 上一主题 下一主题

主题 1509|帖子 1509|积分 4527

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
 一、生成CA根证书(建立可信根)

1.1.创建加密的CA私钥

利用AES-256加密算法生成2048位RSA私钥,防止私钥泄露导致信任链被粉碎:
  1. openssl genrsa -des3 -out selfca.key 2048
复制代码
安全要点:私钥必须设置强密码(建议16位以上混合字符),并存储在加密存储设备中。
   说明:
openssl: OpenSSL 工具的命令行实验器
  
genrsa: 生成RSA密钥的命令
  
-des3: 利用Triple-DES算法对生成的私钥进行加密,这会在生成私钥时要求你设置一个密码,以便在每次利用私钥时都需要提供密码
  
  -out selfca.key: 指定生成的私钥的输出文件名为 selfca.key,私钥文件将被保存在当前工作目录中
  
  2048: 指定生成的RSA私钥的位数为2048位,这是一种常见的安全密钥长度
  1.2.生成CA自签名证书

  1. openssl req -new -x509 -days 3650 -key selfca.key -subj "/C=CN/ST=GD/L=ZS/O=SJJ/OU=SJJ/CN=CA" -out selfca.crt
复制代码
  说明:
  openssl req: 这是 OpenSSL 工具中用于处理证书签署哀求(CSR)的命令
  
  -new: 表现创建新的 CSR
  
  -x509: 表现生成自签名的 X.509 证书,而不是生成 CSR
  
  -days 3650: 设置证书的有效期为 3650 天(10 年)
  
  -key selfca.key: 指定用于生成证书的私钥文件为 selfca.key
  
  -subj "/C=CN/ST=GD/L=ZS/O=SJJ/OU=SJJ/CN=CA": 设置证书主题(Subject)的信息。这里利用了简化的 Distinguished Name (DN),包罗了国家(C=CN)、省/州(ST=GD)、城市(L=ZS)、组织(O=SJJ)、组织单元(OU=SJJ)、通用名称(CN=CA)等信息
  
  -out selfca.crt: 指定生成的证书文件的输出路径和文件名,这里为 selfca.crt
  注意:实验上述指令大概会报出以下错误
    errог:2406F079: random number generator: RAND_load_file: Cannot open file:сrypto/rand/randfile.c:88: Filename=/root/. rnd
   需要实验以下指令:
  1. # 生成随机数文件并设置权限
  2. openssl rand -out /root/.rnd 2048
  3. chmod 600 /root/.rnd
复制代码
二、 自签名SSL证书

  1. openssl req -newkey rsa:2048 -nodes -keyout server.key -subj "/C=CN/ST=GD/L=ZS/O=SJJ/OU=SJJ/CN=xx.xx.xx.xx" -out server.csr
复制代码
  说明:
  openssl req: 这是 OpenSSL 工具中用于处理证书签署哀求(CSR)的命令
  
  -newkey rsa:2048: 创建一个新的 RSA 密钥对,其中包罗一个 2048 位的 RSA 私钥和相应的公钥
  
  -nodes: 生成的私钥不利用密码进行加密。这意味着私钥文件 server.key 将不需要密码才华访问
  
  -keyout server.key: 指定生成的私钥文件的输出路径和文件名,这里为 server.key
  
  -subj "/C=CN/ST=BJ/L=BJ/O=MyRootServer/OU=MyServer/CN=xx.xx.xx.xx": 设置证书主题(Subject)的信息。这里利用了简化的 Distinguished Name (DN),包罗了国家(C=CN)、省/州(ST=BJ)、城市(L=BJ)、组织(O=MyRootServer)、组织单元(OU=MyServer)、通用名称(CN=xx.xx.xx.xx)等信息。通用名称(CN)通常用于指定服务器的主机名或 IP 地点
  
  -out server.csr: 指定生成的证书签署哀求文件的输出路径和文件名,这里为 server.csr
  三、利用CA根证书签名SSL证书 

  1. openssl x509 -req -extfile <(printf "subjectAltName=IP:xx.xx.xx.xx") -days 3650 -in server.csr -CA selfca.crt -CAkey selfca.key -CAcreateserial -out server.crt
复制代码
   openssl x509: 这是 OpenSSL 工具中用于处理 X.509 证书的命令
  
  -req: 表现输入的文件是证书签署哀求(CSR)
  
  -extfile <(printf "subjectAltName=IP:xx.xx.xx.xx"): 利用扩展文件,该文件包罗了额外的证书扩展信息。在这里,subjectAltName 扩展用于指定主体的备用名称(Subject Alternative Name),这里指定了 IP 地点 xx.xx.xx.xx。你也可以在方括号中添加其他主机名或 IP 地点,用逗号分隔
  
  -days 3650: 设置生成的证书的有效期为 3650 天(10 年)
  
  -in server.csr: 指定输入的证书签署哀求文件,这里为 server.csr
  
  -CA selfca.crt: 指定用于签署证书的 CA 证书文件,这里为 selfca.crt
  
  -CAkey selfca.key: 指定用于签署证书的 CA 私钥文件,这里为 selfca.key
  
  -CAcreateserial: 创建一个新的序列号文件,该文件用于跟踪 CA 签署的证书的唯一性
  
  -out server.crt: 指定生成的证书文件的输出路径和文件名,这里为 server.crt
  四、终极的文件列表

   selfca.key:CA私钥,用于后续签名SSL证书
  
  selfca.crt:CA根证书,用于后续签名SSL证书,需要加入到操纵体系或浏览器的信任列表中
  
  server.key:服务器私钥,需要配置到https服务,好比Apache和Nginx配置文件中
  
  server.csr:证书签署哀求文件,后续没用了
  
  server.crt:自签名SSL证书,需要配置到https服务,好比Apache和Nginx配置文件中,这就是代表服务器的身份证件
  五、查询证书信息

  1. openssl x509 -text -noout -in server.crt
复制代码
六、nginx配置利用

  1. user root;
  2. worker_processes 2;
  3. events {
  4.     worker_connections 1024;
  5. }
  6. http {
  7.     include mime.types;
  8.     default_type application/octet-stream;
  9.     sendfile on;
  10.     keepalive_timeout 65;
  11.     gzip on;
  12.     server_tokens off;
  13.     underscores_in_headers on;
  14.     add_header x-Content-Typе-Options nosniff;
  15.     reset_timedout_connection on;
  16.    
  17.     server {
  18.         listen 443 ssl;
  19.         server_name localhost;
  20.         ssl_certificate /usr/share/nginx/ssl/server.crt;  # 生成的证书
  21.         ssl_certificate_key /usr/share/nginx/ssl/server.key; # 生成的秘钥
  22.         ssl_session_cache shared:SSL:lm;
  23.         ssl_session_timeout 5m;
  24.         ssl_protocols TLSv1.2 TLSv1.3;
  25.         ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
  26.         ssl_prefer_server_ciphers on;
  27.         client_max_body_size 1000M;
  28.         location / {
  29.             root html;
  30.             index index.html index.htm;
  31.         }
  32.     }
  33.     include servers/*;
  34. }
复制代码
本文参考以下文章:
自建CA并生成自签名SSL证书-----AlbertS
本文章的内容到这就已经竣事了,希望文章可以帮到你们,感谢你们的阅读,觉得小编的文章写得不错可以关注小编,我将会不定期更新关于服务器摆设应用相关知识的博文。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

慢吞云雾缓吐愁

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表