openssl生成服务器客户端秘钥已经颁发证书等配置命令

本文主要是介绍openssl生成服务器客户端秘钥已经颁发证书等配置命令,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载:http://davidbj.blog.51cto.com/4159484/1613780/
1.首先要生成服务器的私钥:
openssl genrsa -des3 -out server.key 2048

{注:openssl rsa -in server.key -out server.key
执行这个命令之后,再启动nginx时,就无需输入密码}


2. 用server.key生成一个证书
openssl req -new -key server.key -out server.csr
生成的csr 文件交给CA机构签名后,形成服务器自己的证书。按照提示,提供服务器证书的相关信息。



3. 对客户端也做同样的命令生成key及csr文件
openssl genrsa -des3 -out client.key 2048


4. 用client.key 生成一个证书
openssl req -new -key client.key -out client.csr


5. 生成CSR证书文件必须有CA机构的签名才可以形成证书。这里制作自己的CA生成一个key文件CA.key和一个根证书ca.crt
openssl req -new -x509 -keyout ca.key -out ca.crt

7. 创建openssl.conf 生成的配置文件,输入一下命令

#根据openssl.cnf生成配置文件
touch /etc/pki/CA/{index.txt,serial}
#设置副本名称开始内容
echo 01 > /etc/pki/CA/serial
#设置副本证书存放目录
mkdir /etc/pki/CA/newcerts


8. 用CA的证书为刚才生成的server.csr 和 client.csr进行文件签名

a:为服务器颁发证书
openssl ca -in server.csr -out server.crt -cert ca.crt-keyfile ca.key

注:该命令执行后需要选择两次[y/n],我们输入y,即可。


b: 为客户端颁发证书
openssl ca -in client.csr -out client.crt -cert ca.crt-keyfile ca.key


9:证书格式转换

#IE浏览器需要p12证书,所以需要签发p12证书,用于IE签发:
openssl pkcs12 -export -clcerts -in client.crt -inkeyclient.key -out client.p12
#IOS 证书签发格式
openssl x509 -in client.crt -out client.cer
#Android 证书签发格式
openssl pkcs12 -export -in client.crt -inkey client.key -out  client.pfx
#pem格式证书
openssl pkcs12 -export -in ddmdd_a.pfx -out client.pem




10 其他:
a. 删除私钥密码:
#删除私钥密码
openssl rsa -in client.key -out client_open.key

b. 证书撤销
echo 01 >   crlnumber
openssl ca -keyfile ca.key -cert ca.crt -revoke  client.crt  #从CA中撤销证书client.crt
openssl ca -gencrl -keyfile ca.key -cert ca.crt -outclient.crl   #生成或更新撤销列表


c. 查看证书信息
openssl x509 -in client.pem -noout -text

d. 
client 浏览器需要使用的文件:ca.crt,client.crt,client.key,client.pfx
server 端使用的文件有:     ca.crt,server.crt,server.key


11. 配置Nginx SSL

server {
      listen           443ssl;
      server_name     smsapi.chunbo.com;
      root             /var/www/smsapi.david.com;
      ssl on;
      ssl_certificate         /etc/nginx/conf.d/server.crt;
      ssl_certificate_key     /etc/nginx/conf.d/server.key;
      ssl_client_certificate  /etc/nginx/conf.d/ca.crt;
      ssl_verify_client       off;
      ssl_session_timeout     5m;
      ssl_protocols   SSLv2 SSLv3TLSv1;
      ssl_ciphers     HIGH:!aNULL:!MD5;
      ssl_prefer_server_ciphers   on;
      location / {
          indexindex.php index.html;
      }
      location ~ \.php$ {
          include        /etc/nginx/fastcgi_params;
          if (-f$request_filename) {
              fastcgi_pass  127.0.0.1:9000;
          }
          fastcgi_index   index.php;
          fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
      }
}
#nginx 配置完成,reloadNginx服务

12. 客户端导入证书
证书安装及使用把刚才生成的证书:根证书ca.crt和客户端client.crt(client.pfx)安装到客户端,ca.crt安装到信任的机构,client.crt直接在windows安装或安装到个人证书位置。(如果是IE浏览器,需要安装client.pfx证书,在导入的时候需要输入证书签发的密码)


13. 测试

接下来就可以通过浏览器进行测试。有的时候可能会作为一个API接口提供其它程序进行调用,比如我使用pythonrequests进行调用
import requests
responseObj = requests.get(' cert=('/path/client.crt','/path/client.key' ) )
data = responseObj.text
或:
responseObj = requests.get('  verify='/path/client.pem')
data = responseObj.text

如果是JAVA程序,需要P12格式证书。根据自己的需求进行选择。
给予Nginx+openssl 部署已经完成。

本文出自 “David”博客,请务必保留此出处http://davidbj.blog.51cto.com/4159484/1613780

这篇关于openssl生成服务器客户端秘钥已经颁发证书等配置命令的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/679050

相关文章

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

Python极速搭建局域网文件共享服务器完整指南

《Python极速搭建局域网文件共享服务器完整指南》在办公室或家庭局域网中快速共享文件时,许多人会选择第三方工具或云存储服务,但这些方案往往存在隐私泄露风险或需要复杂配置,下面我们就来看看如何使用Py... 目录一、android基础版:HTTP文件共享的魔法命令1. 一行代码启动HTTP服务器2. 关键参

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

C语言进阶(预处理命令详解)

《C语言进阶(预处理命令详解)》文章讲解了宏定义规范、头文件包含方式及条件编译应用,强调带参宏需加括号避免计算错误,头文件应声明函数原型以便主函数调用,条件编译通过宏定义控制代码编译,适用于测试与模块... 目录1.宏定义1.1不带参宏1.2带参宏2.头文件的包含2.1头文件中的内容2.2工程结构3.条件编