Linux下生成openssl自签名证书
校验证书是否被 CA 证书签名,正确的情况:
$ openssl verify -CAfile /etc/kubernetes/cert/ca.pem /etc/kubernetes/cert/kubernetes.pem
/etc/kubernetes/cert/kubernetes.pem: OK
------------------------------------------------------------------------------
把生成的ca证书和去除密码的私钥文件部署到web服务器后,执行以下命令验证:
不加CA证书验证
openssl s_client -connect demo.rancher.com: -servername demo.rancher.com

添加CA证书验证
openssl s_client -connect demo.rancher.com: -servername demo.rancher.com -CAfile server-ca.crt

---------------------------------------------------------------------------------
Nginx 配置支持HTTPS
vim nginx.conf
server {
listen ;
listen ssl;
server_name *.*.com
...
#ssl on; #同时开启http和https时,不需要开启此项!
ssl_certificate /data/mysite/htdocs/server.crt;
ssl_certificate_key /data/mysite/htdocs/server.key;
...
}
http 与https并存
nginx配置https的官网链接:http://nginx.org/en/docs/http/configuring_https_servers.html
-------------------------------------------------------------------------------------------------
SSL 安全证书可以自己生成,也可以通过第三方的 CA ( Certification Authority )认证中心付费申请颁发。
SSL 安全证书包括:
1、CA 证书,也叫根证书或中间级证书。单向认证的 https , CA 证书是可选的。主要目的是使证书构成一个证书链,以达到浏览器信任证书的目的。如果使用了 CA 证书,服务器证书和客户证书都使用 CA 证书来签名。如果不安装 CA 证书,浏览器默认认为是不安全的。
2、服务器证书。必选。通过服务器私钥,生成证书请求文件 CSR ,再通过 CA 证书签名生成服务器证书。
3、客户证书。可选。如果有客户证书,就是双向认证的 HTTPS ,否则就是单向认证的 HTTPS 。生成步骤和服务器证书类似。
上面几种证书都可以自己生成。商业上,一般自己提供服务器或客户证书端的私钥和证书请求 CSR ,或向第三方机构付费申请得到通过 CA 证书签名的服务器证书和客户证书。
准备工作:
在操作前,最好将openssl.cnf文件打开,查看其dir路径将其修改为dir = /home/wjoyxt/demoCA /,否则下面的步骤会提示路径无法找到。
1、手动在当前目录/home/wjoyxt创建一个CA目录结构:
$ mkdir -p ./demoCA/newcerts
2、创建空文件:
$ touch demoCA/index.txt
3、创建并向文件中写入01:
$ echo 01 > demoCA/serial
CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书。
数字安全证书就是标志网络用户身份信息的一系列数据,用来在网络通讯中识别通讯各方的身份,即要在Internet上解决"我是谁"的问题,就如同现实中我们每一个人都要拥有一张证明个人身份的身份证或驾驶执照一样,以表明我们的身份或某种资格.
一、首先开始建立根证书
1、生成CA的私钥(key文件)
openssl genrsa -out ca.key 1024
openssl rsa -in server.key -out ca.key 为私钥移除密码
2、填写证书申请表。(省略)
openssl req -new -key ca.key -out ca.csr -config /etc/pki/tls/openssl.cnf
生成csr文件并交给CA签名后才可形成证书,屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可
这个命令将会生成一个证书请求,当然,用到了前面生成的密钥ca.key文件,这里将生成一个新的文件ca.csr,即一个证书请求文件,你可以拿着这个文件去数字证书颁发机构(即CA)申请一个数字证书。CA会给你一个新的文件ca.crt ,那才是你的数字证书。
3、自己签定根签书
Country Name (2 letter code) [AU]:(国家) ----必填 C
State or Province Name (full name) [Some-State]:(洲/省) ----必填 ST
Locality Name (eg, city) []:(城/镇) ----可为空 L
Organization Name (eg, company) [Internet Widgits Pty Ltd]:(组织名) ----必填 O
Organizational Unit Name (eg, section) []:(单位名) ----可为空 OU
Common Name (eg, YOUR name) []:(httpd-ssl.conf中的ServerName 名称) ----必填 CN (此处签署根证书时可不填,签定服务器端证书时必填)
Email Address []:(邮箱) ----可为空
二、制做服务器端的证书并用ca签名
1、生成服务器端rsa私钥
openssl genrsa -out server.key 1024
2、生成服务器证书请求( CSR )
openssl req -new -key server.key -out server.csr -config /etc/pki/tls/openssl.cnf -subj "/C=cn/ST=beijing/O=zuweihui/CN=www.def.com"
需要依次输入国家,地区,组织,email。最重要的是有一个Common Name 即CN,可以写你的名字或者域名。如果为了https申请,这个必须和域名或对外访问IP相吻合,否则会引发浏览器警报。生成的csr文件交给CA签名后形成服务端自己的证书。
3、用生成的CA的证书为刚才生成的server.csr或client.csr文件签名
openssl ca -keyfile ca.key -cert ca.crt -in server.csr -out server.crt -config /etc/pki/tls/openssl.cnf
三、制做客户端的证书并用ca签名:(与生成服务器证书差不多)
需要注意的是:
这个certificate是BASE64形式的,要转成 PKCS#12/PFX 格式才能安装到浏览器上.所以还要进行转换一下
openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx
执行后提示如下:
Enter pass phrase for client.key:
Enter Export Password: # 设置client.pfx密码
Verifying - Enter Export Password:
另:
client 使用的文件有:ca.crt,client.crt,client.key,client.pfx
server 使用的文件有:ca.crt,server.crt,server.key
证书安装及使用
把刚才生成的证书:根证书ca.crt和客户证书client.crt(client.pfx)安装到客户端, ca.crt安装到信任的机构,client.crt直接在windows安装或安装到个人证书位置,然后用IP访问HTTP和https服务器。在IE中我们一般导入client.pfx证书,导入时会提示上面设置的密码。
----------------------------------------------------------------------------------------------------------------------------------------
说明:
本指令计算用来哈希某个密码,也可以用来哈希文件内容。
本指令支持三种哈希算法:
UNIX系统的标准哈希算法(crypt)
MD5-based BSD(1)
OPTIONS
-crypt -1 -apr1
这三个option中任意选择一个作为哈希算法,缺省的是-crypt
-salt string
输入作为salt的字符串。
-in file
要哈希的文件名称
-stdin
从标准输入读入密码
-quiet
当从标准输入读密码,输入的密码太长的时候,程序将自动解短它。这个option的
set将不在情况下发出警告。
-table
在输出列的时候,先输出明文的密码,然后输出一个TAB,再输出哈希值.
举例时间:
openssl passwd -crypt -salt xx password xxj31ZMTZzkVA.
openssl passwd -1 -salt xxxxxxxx password $1$xxxxxxxx$8XJIcl6ZXqBMCK0qFevqT1.
openssl passwd -apr1 -salt xxxxxxxx password $apr1$xxxxxxxx$dxHfLAsjHkDRmG83UXe8K0
产生的原因是:
This thing happens when certificates share common data. You cannot have two certificates that look otherwise the same.
方法一:
修改demoCA下 index.txt.attr
将
unique_subject = yes
改为
unique_subject = no
方法二:
删除demoCA下的index.txt,并再touch下
- rm index.txt
- touch index.txt
Linux下生成openssl自签名证书的更多相关文章
- linux下利用openssl来实现证书的颁发(详细步骤)--转载和修改
原文地址:http://www.cnblogs.com/firtree/p/4028354.html linux下利用openssl来实现证书的颁发(详细步骤) 1.首先需要安装openssl,一个开 ...
- linux下利用openssl来实现证书的颁发(详细步骤)
1.首先需要安装openssl,一个开源的实现加解密和证书的专业系统.在centos下可以利用yum安装. 2.openssl的配置文件是openssl.cnf,我们一般就是用默认配置就可以.如果证书 ...
- Window下生成OpenSSL自签证书
:OPenSSL下载地址:https://www.openssl.org/source/ 编译好的OpenSSL下载地址: http://slproweb.com/products/Win32Open ...
- SSL--Windows下生成OpenSSL自签证书
:OPenSSL下载地址:https://www.openssl.org/source/ 编译好的OpenSSL下载地址: http://slproweb.com/products/Win32Open ...
- linux下Tomcat+OpenSSL配置单向&双向认证(自制证书)
背景 由于ios将在2017年1月1日起强制实施ATS安全策略,所有通讯必须使用https传输,本文只针对自制证书,但目前尚不确定自制证书是否能通过appstore审核. 1.必须支持传输层安全(TL ...
- Linux下使用openssl生成证书
利用OpenSSL生成库和命令程序,在生成的命令程序中包括对加/解密算法的测试,openssl程序,ca程序.利用openssl,ca可生成用于C/S模式的证书文件以及CA文件. 参考:http:// ...
- linux下使用openssl生成 csr crt CA证书
证书文件生成:一.服务器端1.生成服务器端 私钥(key文件);openssl genrsa -des3 -out server.key 1024运行时会提示输入密码,此密码用于加密key文件( ...
- 使用c语言实现在linux下的openssl客户端和服务器端编程
使用c语言实现在linux下的openssl客户端和服务器端编程 摘自:https://www.cnblogs.com/etangyushan/p/3679457.html 前几天组长让我实现一个使用 ...
- linux下生成core dump文件方法及设置
linux下生成core dump文件方法及设置 from:http://www.cppblog.com/kongque/archive/2011/03/07/141262.html core ...
随机推荐
- java 多线程之:sleep() 方法
sleep()介绍 sleep() 定义在java.lang.Thread中. sleep() 的作用是让当前线程休眠,即当前线程会从"运行状态"进入到"休眠(阻塞)状态 ...
- netty答题
1,介绍一下netty netty封装了Java原生的nio,是一个异步和数据驱动的网络编程框架, 与tcp: netty -> Java Runtime Socket (io.nio.nio2 ...
- Telnet 工具远程连接服务器
1.启动tomcat 2. 使用telnet命令 打开CMD,输入telnet localhost 8080 3.显示如下界面,说明已经连接成功 4. 复制如下代码到连接成功的界面 HEAD / ...
- 基于ionic框架封装一个图片轮播指令的几点
在这里我想在项目中封装一个图片轮播的指令 (本项目使用的是ionic框架) 1)定义指令 define(['app'],function(myapp){ myapp.directive('myslid ...
- WCF揭秘学习笔记(5):WF定制活动
WF(Windows Workflow Foundation,Windows工作流基础)为.NET提供了一种基于模型的.声明方式的过程执行引擎,它改变了传统的通过一行行编写代码来开发服务功能的方式. ...
- Java之优先队列
PriorityQueue属于Java Collections Framework.PriorityQueue基于优先级堆,它是Queue接口的实现.当我们需要一个Queue实现时,可以使用这种数据结 ...
- RegExp实例
ECMAScript通过RegExp类型来支持正则表达式,常见的正则表达式为:var expression = /pattern / flags;其中的模式(pattern)部分可以使任何简单或复杂的 ...
- ZeroClipboard插件,复制到剪切板
发现一个复制到剪切板的插件:ZeroClipboard插件.挺好用,用法如下: 头部引用: <script type="text/javascript" src=" ...
- apache 服务器在ubuntu上图片无法显示解决
很简单的一段代码实例: <!DOCTYPE html> <html> <body> <h2>Welcome here!</h2> <i ...
- [UE4]用向量表示方向
向量的概念 一.物理角度的向量 1)向量就是具有大小和长度的量 2)向量就是空间空的箭头 3)向量可以随意平移 举例:力,force:速度,velcity.这些都是具有大小和方向的量,都可以看成是向量 ...