openssl 、nginx生成配置自签名证书

1.概要

在nginx进行https代理的时候是需要配置证书的,通过CA机构获取的证书是收费的,出于研究测试的话可以通过openssl自己制作证书,使用openssl制作证书如下:
(1)生成CA根证书
(2)生成服务器证书请求
(3)通过CA根证书和服务器证书请求生成服务器证书
服务器证书生成后,便可以在nginx进行配置

2.openssl介绍

linux上的openssl是一个用于生成密钥、公钥,证书,以及进行证书签名的工具。

3.生成CA根证书

3.1配置openssl

在使用openssl前,首先需要对openssl进行配置,设置好证书的存放目录,序列ID等的存放位置,基本上默认的设置都已经做好了,只需要更改一下dir的值就好

vim /etc/ssl/openssl.cnf
image.png

然后针对于上图的所示的文件结构,创建对应的文件目录和文件

mkdir -pv /etc/pki/CA/{certs,crl,newcerts,private}
touch /etc/pki/CA/{serial,index.txt}

使用tree 命令查看目录结构如下所示:

woder@woder-pc:/etc$ tree /etc/pki
/etc/pki
├── CA
│   ├── certs          (已颁发的证书保存目录)
│   ├── crl              (证书撤销列表存放目录)
│   ├── index.txt     (数据库索引文件,记录着一些已签署的证书信息)
│   ├── newcerts    (新签署证书的保存目录)
│   ├── private        (存放CA私钥的目录)
│   └── serial        (当前证书序列号)

3.2指定证书编号

根证书是用来生成服务器证书的,证书之间是存在链式关系,当信任根证书时,由其衍生出来的证书都会被信任。
从根证书开始每一个证书都有一个对应的编号,是通过serial的值来进行维护的,首先指明证书的开始编号

echo 01 >> serial

3.3生成CA私钥

使用umask 077使得之后生成文件的默认权限为077,使用openssl工具生成 4096位的rsa秘钥,该秘钥存放在/etc/pki/CA/private/cakey.pem 中

umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096
image.png

3.4生成CA证书

使用刚生成的私钥生成CA证书
req: 这是一个大命令,提供生成证书请求文件,验证证书,和创建根CA
-new: 表示新生成一个证书请求
-x509: 直接输出证书
-key: 生成证书请求时用到的私钥文件
-out:输出文件

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650

中间会要求输入地址,邮箱,公司等名字,由于是自颁发,随便输入即可。


image.png

这个生成CA证书的命令会让人迷惑,因为生成证书其实一般需要经过三个步骤
1.生成秘钥 xxx.pem
2.通过秘钥 xxx.pem 生成证书请求文件 xxx.csr
3.通过证书请求文件 xxx.csr 生成最终的证书 xxx.crt
但是以下的命令将2和3杂糅在了一起

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650

其实等价于

//生成证书请求文件
openssl req -new -out /etc/pki/CA/req.csr -key /etc/pki/CA/private/cakey.pem
// -in 使用证书请求文件生成证书,-signkey 指定私钥,这是一个还没搞懂的参数
openssl x509 -req - in /etc/pki/CA/req.csr -out /etc/pki/CA/cacert.pem -signkey /etc/pki/CA/private/cakey.pem -days 3650

4.生成服务端证书

4.1生成服务端私钥

首先我创建并进入了~/https目录,然后生成服务端的私钥

openssl genrsa -out https.pem 4096
image.png

4.2生成服务端证书请求

openssl req -new -key https.pem -out https.csr -days 365 -subj "/C=CN/ST=asdf/L=asdf/O=asdf/CN=domainName.com/emailAddress=xxx@foxmail.com"
image.png

这里使用-subj 可以预先完成证书请求者信息的填写,但要注意,填入的信息中C和ST和L和O一定要与签署的根证书一样,如果忘记了根证书乱填了什么,可以通过如下指令进行查询

openssl x509 -in 根证书的路径+名字 -noout -subject

4.3生成服务端证书

执行以下命令之后就能得到证书文件https.cert,这就是用于发送给客户端的证书

openssl ca -in https.csr -out https.crt -days 365
image.png

5 nginx的配置

由于https默认采用443端口,所以此处配置443端口

5.1下载安装配置nginx

wget http://nginx.org/download/nginx-1.11.3.tar.gz 
tar -zfxv nginx-1.11.3.tar,gzpeizhi
cd nginx-1.11.3
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make install

进入到配置文件nginx.conf,主要是修改ssl_certificate 和ssl_certificat_key,这两个就分别放证书和私钥就好了


image.png

使用配置文件启动nginx后

sudo /usr/sbin/nginx -c /home/woder/download/nginx-1.13.6/conf/nginx.conf 

最后在浏览器中使用https访问 localhost,会提示不安全,是因为没有信任根证书,但说明已经收到了根证书,点击继续浏览,可以看到nginx的欢迎页;也可以把根证书通过chrome加以安装信任


image.png

其它

除了服务端证书和CA根证书之外,还有一种类型叫做客户端证书,这个的作用是用来验证客户的身份,在极少数的情况下会用到,比如说网银限制客户在某台机器上进行登陆,很久之前银行提供的u盾的作用就是为了提供客户端证书而存在的。总之,证书的作用就是用来验证身份。

参考

使用 openssl 生成证书(含openssl详解):https://blog.csdn.net/gengxiaoming7/article/details/78505107
理解服务器证书CA&& SSL: https://blog.csdn.net/weixin_41830501/article/details/81128968
使用openssl生成证书(详细): https://blog.csdn.net/gengxiaoming7/article/details/78505107
证书的签发和通信过程: https://www.cnblogs.com/handsomeBoys/p/6556336.html
自签名根证书和客户端证书的制作: https://blog.csdn.net/ilytl/article/details/52450334
openssl指令说明: https://www.cnblogs.com/gordon0918/p/5409286.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容