校验证书是否被 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

PKI(Public Key Infrastructure ) 即"公钥基础设施"
RSA 即RSA公钥加密算法,RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准
CSR ( Certificate Signing Request )是一个证书签名请求,在申请证书之前,首先要在 WEB 服务器上生成 CSR ,并将其提交给 CA 认证中心, CA 才能给您签发 SSL 服务器证书。可以这样认为, CSR 就是一个在您服务器上生成的证书。
CA中心又称CA机构,即证书授权中心(Certificate Authority ),或称证书授权机构,作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任

CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书。
数字安全证书就是标志网络用户身份信息的一系列数据,用来在网络通讯中识别通讯各方的身份,即要在Internet上解决"我是谁"的问题,就如同现实中我们每一个人都要拥有一张证明个人身份的身份证或驾驶执照一样,以表明我们的身份或某种资格.

 

一、首先开始建立根证书
1、生成CA的私钥(key文件)
      openssl genrsa -out ca.key 1024

      这来细细讲一下这条命令: openssl指进入openssl环境,genrsa是openssl中的一个小应用程序,用来产生rsa私钥。-des3是指将产生的私钥用triple DES进行加密。这是个可选项,还有-des -idea都是对称加密算法,随你自己选择. -out就是指定输出了,如果不加这个选项的话,就会将输出发到标准输出中.2048指私钥的长度,单们是bit,默认是512
 
       openssl genrsa -des3 -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、自己签定根签书

      openssl req -new -x509  -days 1000 -key ca.key -out ca.crt  -config /etc/pki/tls/openssl.cnf -subj "/C=cn/ST=beijing/O=zuweihui/CN=www.abc.com" 

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 []:(邮箱)                                                                         ----可为空

      如果是自己做测试,那么证书的申请机构和颁发机构都是自己。就可以用上面这个命令来生成证书。( X.509是一种非常通用的证书格式)
  

二、制做服务器端的证书并用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"
 
      国家、省和组织名要与上面CA证书一致(区分大小写),否则签署时必然要失败
      需要依次输入国家,地区,组织,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

 
查看创建的证书信息:
openssl x509 -noout -text -in *.crt 
openssl req -noout -text -in *.csr
openssl rsa -noout -text -in *.key
 

三、制做客户端的证书并用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证书,导入时会提示上面设置的密码。
----------------------------------------------------------------------------------------------------------------------------------------

另:
openssl  passwd  [-crypt] [-1] [-apr1] [-salt string] [-in file] [-stdin]  [-quiet] [-table] {password} 
    
说明: 
    本指令计算用来哈希某个密码,也可以用来哈希文件内容。
 
    本指令支持三种哈希算法: 
    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
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
问题分析:
 
openssl TXT_DB error number 2 failed to update database

产生的原因是:

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下

  1. rm index.txt
  2. touch index.txt

Linux下生成openssl自签名证书的更多相关文章

  1. linux下利用openssl来实现证书的颁发(详细步骤)--转载和修改

    原文地址:http://www.cnblogs.com/firtree/p/4028354.html linux下利用openssl来实现证书的颁发(详细步骤) 1.首先需要安装openssl,一个开 ...

  2. linux下利用openssl来实现证书的颁发(详细步骤)

    1.首先需要安装openssl,一个开源的实现加解密和证书的专业系统.在centos下可以利用yum安装. 2.openssl的配置文件是openssl.cnf,我们一般就是用默认配置就可以.如果证书 ...

  3. Window下生成OpenSSL自签证书

    :OPenSSL下载地址:https://www.openssl.org/source/ 编译好的OpenSSL下载地址: http://slproweb.com/products/Win32Open ...

  4. SSL--Windows下生成OpenSSL自签证书

    :OPenSSL下载地址:https://www.openssl.org/source/ 编译好的OpenSSL下载地址: http://slproweb.com/products/Win32Open ...

  5. linux下Tomcat+OpenSSL配置单向&双向认证(自制证书)

    背景 由于ios将在2017年1月1日起强制实施ATS安全策略,所有通讯必须使用https传输,本文只针对自制证书,但目前尚不确定自制证书是否能通过appstore审核. 1.必须支持传输层安全(TL ...

  6. Linux下使用openssl生成证书

    利用OpenSSL生成库和命令程序,在生成的命令程序中包括对加/解密算法的测试,openssl程序,ca程序.利用openssl,ca可生成用于C/S模式的证书文件以及CA文件. 参考:http:// ...

  7. linux下使用openssl生成 csr crt CA证书

    证书文件生成:一.服务器端1.生成服务器端    私钥(key文件);openssl genrsa -des3 -out server.key 1024运行时会提示输入密码,此密码用于加密key文件( ...

  8. 使用c语言实现在linux下的openssl客户端和服务器端编程

    使用c语言实现在linux下的openssl客户端和服务器端编程 摘自:https://www.cnblogs.com/etangyushan/p/3679457.html 前几天组长让我实现一个使用 ...

  9. linux下生成core dump文件方法及设置

    linux下生成core dump文件方法及设置    from:http://www.cppblog.com/kongque/archive/2011/03/07/141262.html core ...

随机推荐

  1. 阿里巴巴Java开发手册-集合处理

    1. [强制]关于 hashCode 和 equals 的处理,遵循如下规则:      1) 只要重写 equals ,就必须重写 hashCode .      2) 因为 Set 存储的是不重复 ...

  2. 进程表/文件表/inode/vnode

    一般我们讲,都说进程有文件描述符表,文件描述符表中的指针指向某个inode,这中间省略了file,dentry对象,对准确理解VFS结构无益,本文结合网络所查,并根据APUE8.3和LKD13.11章 ...

  3. C指针笔试题,蛋疼的多重指针运算,谭浩强的阴影

    对指针的概念清晰的话,做这种题只要耐心就行,然而看这种题就烦(被同学吐槽为谭浩强的阴影……草泥马这种C风格题有意义吗?出题人脑子被门夹了?而且C++11都不支持字面值字符串直接转换成char*了.好吧 ...

  4. ssl证书(https) iis 配置安装

    因客户给的 cer的文件 导入提示 失败,所以用 了 客户给的 crt的格式的证书. 安装证书操作如下:iis>>服务器证书>>右侧菜单-完成证书申请>>选择 本文 ...

  5. Python网络爬虫-requests模块(II)

    有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个人主页数据)时,如果使用之前requests模块常规操作时,往往达不到我们想要的目的,例如: #!/usr/bin/env ...

  6. POJ 1679 The Unique MST (次小生成树kruskal算法)

    The Unique MST 时间限制: 10 Sec  内存限制: 128 MB提交: 25  解决: 10[提交][状态][讨论版] 题目描述 Given a connected undirect ...

  7. 用linux的iconv函数 转换编码

    inux shell 配置文件中默认的字符集编码为UTF-8 .UTF-8是unicode的一种表达方式,gb2312是和unicode都是字符的编码方式,所以说gb2312跟utf-8的概念应该不是 ...

  8. 捷通华声TTS在Aster+中的安装过程

    1)挂载TTS光碟 2)安装如下5个rpm软件包 [asterisk@TTS78:/mnt]$ls *.rpmjTTS-5.0.1.0-3.i386.rpm             VocLib_Xi ...

  9. 在ie6下的png图片的兼容问题

    png图片在ie6下是这样的: 正确样式: 这样解决: html代码: <body> <div class="gys"></div> </ ...

  10. 自己写的jQuery放大镜插件效果(二)(采用只有一张图片的思路)

    废话不多说,先看效果图,和上一章节用的是同一个小图片: 这个方法实现的放大有个弊端就是放大倍数设置的过大的话,会带来图片上的模糊.但是图片加载的话要比使用2张图片加载的快很多 插件代码: ; (fun ...