Nginx SSL 配置:证书文件制作

本文详细介绍了使用Java的keytool工具将JKS证书文件转换为PKCS12格式,然后使用OpenSSL将PKCS12文件转换为.pem格式,并分离出用于NGINX配置的服务器.crt、server.key和ca.crt文件的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、制作负载均衡使用的证书文件
 从相关部门获取对应的证书文件(my.jks)、证书的密码(mypass)、证书对应的名称,通常为IP或者域名(myalias),
 通常jks文件包含了服务器的私钥(server.key),服务器证书(server.crt)、根证书(ca.crt)
二、通过java的keytool工具导出成 PKCS12 格式文件(my.p12)
 
 keytool -importkeystore -srckeystore my.jks -destkeystore my.p12 -srcstoretype JKS -deststoretype PKCS12  \
  -srcstorepass mypass -deststorepass mypass -srcalias myalias -destalias myalias -srckeypass mypass -destkeypass mypass -noprompt
 
 上述命令在一行执行
 
三、使用openssl把PKCS12文件(my.p12)转换成我们需要的pem文件(my.pem)

 openssl pkcs12 -in my.p12 -out my.pem -passin pass:mypass -passout pass:mypass

四、分离my.pem文件,导出服务器配置所需文件
 my.pem一个文件里面实际上包含了服务器做双向SSL证书认证的所有文件,打开my.pem能查看所有的key和证书
 
 得到配置服务器使用的 server.crt,server.key,ca.crt 文件,上述访问的命令分别为:
 openssl pkcs12 -in my.p12  -nodes -nocerts -out server.key
 openssl pkcs12 -in my.p12  -nodes -nokeys -clcerts -out server.crt
 openssl pkcs12 -in my.p12  -nodes -nokeys -cacerts -out ca.crt
 
 
 
五、配置NGINX
  ssl  on;
  ssl_certificate  /path/to/server.crt;
  ssl_certificate_key  /path/to/server.key;                              
  ssl_client_certificate /path/to/ca.crt;
  ssl_verify_client on; 
  
  # 此行方便在java中能够得到证书信息
  proxy_set_header    X-Forwarded-Proto https;
 
六、上述配置后,在重新启动服务器的时候,老是让你输入私有key的密码,为此

  openssl rsa -in server.key -out server.key.unsecure
  修改NGINX配置:
  ssl_certificate_key  /path/to/server.key.unsecure;

### 如何在Nginx配置SSL证书并生成CSR文件 #### 创建必要的环境准备 为了确保能够顺利地配置SSL证书,在服务器端需先准备好相应的运行环境。这涉及到安装一些基础库,这些库对于编译和运行Nginx及其模块至关重要[^2]。 ```bash yum install -y gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel ``` #### 生成私钥与CSR文件 通过OpenSSL工具可以方便地创建用于HTTPS通信所需的私钥和公钥对中的公共部分——即证书签名请求(CSR),此过程同样会生成一个私钥文件(server.key)[^4]。 ```bash openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr ``` 上述命令执行完毕后将会提示输入有关单位的信息,如国家名、省份名称等,这部分信息会被嵌入到最终生成的CSR之中作为验证的一部分。 #### 完成自签署证书制作 当拥有有效的私钥(`server.key`)及对应的CSR(`server.csr`)之后,则可以通过 OpenSSL 工具进一步完成自签发操作来获得可用的X.509格式数字证书(`server.crt`),该证书可用于测试目的或内部网络部署场景下启用加密连接. ```bash openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt ``` #### 将证书放置于指定位置 为了让Nginx正确加载所生成的安全凭证材料,建议新建专门存放SSL资料夹 `/etc/nginx/ssl`,并将之前得到的所有文件移至此处以便后续引用[^1]: ```bash mkdir /etc/nginx/ssl mv *.crt *.csr *.key /etc/nginx/ssl/ ``` #### 修改Nginx配置以支持HTTPS协议 编辑站点对应虚拟主机配置文件加入如下所示指令片段,从而实现HTTP至HTTPS重定向以及TLS握手过程中向客户端提供合法身份证明的目的: ```nginx server { listen 443 ssl; server_name example.com; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; ... } ``` 最后重启服务使更改生效: ```bash systemctl restart nginx.service ``` 这样就完成了整个流程,现在应该可以在浏览器地址栏看到绿色锁形图标表示已成功建立安全链接了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值