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

相关文章

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at