今天尝试在mac机上搭建docker registry私有仓库时,杯具的发现最新的registry出于安全考虑,强制使用ssl认证,于是又详细了解linux/mac上openssl的使用方法,接触了一堆新英文缩写,整理于下:

TLS:传输层安全协议 Transport Layer Security的缩写

SSL:安全套接字层 Secure Socket Layer的缩写

TLS与SSL对于不是专业搞安全的开发人员来讲,可以认为是差不多的,这二者是并列关系,详细差异见 http://kb.cnblogs.com/page/197396/

KEY 通常指私钥。

CSR 是Certificate Signing Request的缩写,即证书签名请求,这不是证书,可以简单理解成公钥,生成证书时要把这个提交给权威的证书颁发机构。

CRT 即 certificate的缩写,即证书。

X.509 是一种证书格式.对X.509证书来说,认证者总是CA或由CA指定的人,一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息。

X.509的证书文件,一般以.crt结尾,根据该文件的内容编码格式,可以分为以下二种格式:

PEM - Privacy Enhanced Mail,打开看文本格式,以"-----BEGIN..."开头, "-----END..."结尾,内容是BASE64编码.
Apache和*NIX服务器偏向于使用这种编码格式.

DER - Distinguished Encoding Rules,打开看是二进制格式,不可读.
Java和Windows服务器偏向于使用这种编码格式

OpenSSL 相当于SSL的一个实现,如果把SSL规范看成OO中的接口,那么OpenSSL则认为是接口的实现。接口规范本身是安全没问题的,但是具体实现可能会有不完善的地方,比如之前的"心脏出血"漏洞,就是OpenSSL中的一个bug.

openssl 给自己颁发证书的步骤:

前提:先建一个cert目录,cd到该目录,以下所有命令的当前路径均为该目录

1. 生成私钥KEY

1
openssl genrsa -des3 -out server.key 2048

这一步执行完以后,cert目录下会生成server.key文件

2. 生成证书请求文件CSR

1
openssl req -new -key server.key -out server.csr

该命令先进入交互模式,让你填一堆东西,参考下图:


要注意的是Common Name这里,要填写成使用SSL证书(即:https协议)的域名或主机名,否则浏览器会认为不安全。例如:如果以后打算用https://yjm-docker/xxx 这里就填写yjm-docker

3. 生成CA的证书

前面提过X.509证书的认证者总是CA或由CA指定的人,所以得先生成一个CA的证书

1
openssl req -new -x509 -key server.key -out ca.crt -days 3650

4. 最后用第3步的CA证书给自己颁发一个证书玩玩

1
2
3
openssl x509 -req -days 3650 -in server.csr \
  -CA ca.crt -CAkey server.key \
  -CAcreateserial -out server.crt

执行完以后,cert目录下server.crt 就是我们需要的证书。当然,如果要在google等浏览器显示出安全的绿锁标志,自己颁发的证书肯定不好使,得花钱向第三方权威证书颁发机构申请(即:第4步是交给权威机构来做,我们只需要提交server.key、server.csr,哦,还有毛爷爷就好了)

删除密码记录:

###### 1 生成2048bit的RSA私钥文件typecodes.key
[root@typecodes ssl]# openssl genrsa -des3 -out typecodes.key 2048
Generating RSA private key, 2048 bit long modulus
.......................+++
...............+++
e is 65537 (0x10001)
Enter pass phrase for typecodes.key:
Verifying - Enter pass phrase for typecodes.key: [输入两次相同的密码]
###### 2 生成CSR证书签名请求文件typecodes.csr
[root@typecodes ssl]# openssl req -new -key typecodes.key -out typecodes.csr
Enter pass phrase for typecodes.key: [输入之前的密码]
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN [国籍]
State or Province Name (full name) []:GuangDong [省份]
Locality Name (eg, city) [Default City]:ShenZhen [城市]
Organization Name (eg, company) [Default Company Ltd]:TypeCodes.com [公司]
Organizational Unit Name (eg, section) []:TypeCodes.com [行业]
Common Name (eg, your name or your server's hostname) []:TypeCodes.com [自己的域名]
Email Address []:vfhky@typecodes.com Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: [这里不填]
An optional company name []: [这里不填]
###### 3 去掉密钥文件typecodes.key的密码 【强烈推荐】
[root@typecodes ssl]# cp typecodes.key typecodes.key.origin
[root@typecodes ssl]# openssl rsa -in typecodes.key.origin -out typecodes.key
Enter pass phrase for typecodes.key.origin:
writing RSA key [输入之前的密码]
###### 4 当然也可用openssl通过私钥和CSR自己生成签名文件,但是可能不被浏览器认可,所以本步骤应该跳过
[root@typecodes ssl]# openssl x509 -req -days 365 -in typecodes.csr -signkey typecodes.key -out typecodes.crt
Signature ok
subject=/C=CN/ST=GuangDong/L=ShenZhen/O=TypeCodes.com/OU=TypeCodes.com/CN=TypeCodes.com/emailAddress=vfhky@typecodes.com
Getting Private key
###### 5 查看上面4个步骤所产生的文件,其中typecodes.crt是不需要的
[root@typecodes ssl]# ls
typecodes.crt typecodes.csr typecodes.key typecodes.key.origin

  

openssl、x509、crt、cer、key、csr、ssl、tls process的更多相关文章

  1. 关于x509、crt、cer、key、csr、pem、der、ssl、tls 、openssl等

    关于x509.crt.cer.key.csr.pem.der.ssl.tls .openssl等 TLS:传输层安全协议 Transport Layer Security的缩写 TLS是传输层安全协议 ...

  2. linux基础之加密解密、PKI及SSL、创建私有CA

    加密解密基础 1. 对称加密: 加密和解密使用同一个密钥 常见的加密算法有:DES.3DES.AES.Blowfish.Twofish.IDEA.RC6.CAST5 特性: 1. 加密.解密使用同一个 ...

  3. 数字证书、SSL、HTTPS及在Nginx中的配置

    一.什么是 RSA.SSL.HTTPS RSA:它是非对称加密算法的一种,而且是最常用的一种.它的理论基础是:计算两个大质数的乘积非常简单,而对该乘积进行因子分解就非常困难.而且 这两个质数越大,对其 ...

  4. 小白日记53:kali渗透测试之Web渗透-SSL、TLS中间人攻击(SSLsplit,Mitmproxy,SSLstrip),拒绝服务攻击

    SSL.TLS中间人攻击 SSL中间人攻击 攻击者位于客户端和服务器通信链路中 利用方法: ARP地址欺骗 修改DHCP服务器 (存在就近原则) 手动修改网关 修改DNS设置 修改HOSTS文件[高于 ...

  5. 科普:TLS、SSL、HTTPS以及证书(转)

    最近在研究基于ssl的传输加密,涉及到了key和证书相关的话题,走了不少弯路,现在总结一下做个备忘 不少人可能听过其中的超过3个名词,但它们究竟有什么关联呢? TLS是 传输层安全协议(Transpo ...

  6. TLS、SSL、HTTPS以及证书

    转自:http://www.cnblogs.com/kyrios/p/tls-and-certificates.html 最近在研究基于ssl的传输加密,涉及到了key和证书相关的话题,走了不少弯路, ...

  7. [Docker]docker搭建私有仓库(ssl、身份认证)

    docker搭建私有仓库(ssl.身份认证) 环境:CentOS 7.Docker 1.13.1 CentOS 7相关: https://www.cnblogs.com/ttkl/p/11041124 ...

  8. Mosquitto的搭建(websocket、ssl、auth-plug)及坑点总结

    Mosquitto的搭建及坑点总结 主要讲述的是eclipse-mosquitto的C语言版本的搭建,主要是为了从1.4.15版本升级到1.6.9,为解决一些webSocket和数据格式问题. 因为根 ...

  9. /MT、/MD编译选项,以及可能引起在不同堆中申请、释放内存的问题

    一.MD(d).MT(d)编译选项的区别 1.编译选项的位置 以VS2005为例,这样子打开: 1)         打开项目的Property Pages对话框 2)         点击左侧C/C ...

随机推荐

  1. Eclipse 保存文件时自动格式化代码

    很多同学不知道Eclipse有个很有用的功能,就是自动格式源代码的功能,一般大家都是直接Ctrl+Shift+F手动格式化,多浪费时间. 其实Eclipse里已经带有自动格式化功能了,默认是没有代开该 ...

  2. 混乱之子第一季/全集Sons Of Anarchy迅雷下载

    本季第一至六季 Sons of Anarchy (2008-2013)看点:<混乱之子>发生在一个虚构的加州小镇(Charming)上,面对毒品贩子和大型土地开发商的步步紧逼,一家黑白两道 ...

  3. Java中IO的简单举例

    package com.kale.io; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStr ...

  4. HTML5 浏览器返回按钮/手机返回按钮事件监听

    1.HTML5  History对象 支持使用pushState()方法修改地址栏地址,而不刷新页面. popstate事件 当history实体被改变时,popstate事件将会发生.调用pushS ...

  5. FinalizableReference, FinalizablePhantomReference, FinalizableReferenceQueue

    FinalizableReference /* * Copyright (C) 2007 The Guava Authors * * Licensed under the Apache License ...

  6. Android 应用程序之间内容分享详解(二)

    转载请注明出处:http://blog.csdn.net/xiaanming/article/details/9428613 Android 应用程序之间内容分享详解(一) 之前给大家分享了你开发的应 ...

  7. sharepoint 2010 记录管理 对象模型

    首先说一下什么是记录管理:这里有详细的说明 在 网站设置->网站集管理->网站集功能 中启用 “现场记录管理” 启用现场记录管理后在 网站管理 中多了2个功能“内容管理器设置” 和“内容管 ...

  8. Service 简介 启动方式 生命周期 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  9. ORM数据库框架 greenDAO SQLite MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  10. AS 阿里巴巴Java开发规约 CheckStyle-IDEA

    Alibaba Java Coding Guidelines 简介 github地址:https://github.com/alibaba/p3c  官方文档    阿里巴巴Java开发手册(纪念版) ...