本地自签https证书
由于开发过程中经常遇到使用https进行测试的一个环境,而如果想要一个权威认证的ssl证书又不便宜,而且需要自己拥有域名和服务器、DNS认证等等,如果只是单纯的想要一个https环境作为测试,那么自己生成一个证书就够了,虽然浏览器会有警告,但这不重要,直接点击相信即可。
由CA签署的证书为服务器提供重要的功能:
- 浏览器会自动识别证书并且在不提示用户的情况下允许创建一个安全连接。
- 当一个CA生成一个签署过的证书,它为提供网页给浏览器的组织提供身份担保。
- 多数支持ssl的web服务器都有一个CA列表,它们的证书会被自动接受。当一个浏览器遇到一个其授权CA并不在列表中的证书,浏览器将询问用户是否接受或拒绝连接。
环境
由于我们生成的证书需要用到openssl
及nginx
,请提前准备好。
开始
①建立目录certs,专门用来存放证书和私钥
mkdir certs
下图是我们最后完成的时候在这个目录下产生的文件
②创建配置文件用于生成证书
vim localhost.conf
配置文件内容如下,可自作修改
[ req ]default_bits = 2048 # RSA的2048是公认较比较安全的key长度
default_keyfile = server-key.pem
distinguished_name = subject
req_extensions = req_ext
x509_extensions = x509_ext
string_mask = utf8only[ subject ]countryName = Country Name (2 letter code)
countryName_default = USstateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = NYlocalityName = Locality Name (eg, city)
localityName_default = New YorkorganizationName = Organization Name (eg, company)
organizationName_default = Example, LLCcommonName = Common Name (e.g. server FQDN or YOUR name)
commonName_default = Example CompanyemailAddress = Email Address
emailAddress_default = test@example.com[ x509_ext ]subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuerbasicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
subjectAltName = @alternate_names
nsComment = "OpenSSL Generated Certificate"[ req_ext ]subjectKeyIdentifier = hashbasicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
subjectAltName = @alternate_names
nsComment = "OpenSSL Generated Certificate"[ alternate_names ]DNS.1 = 192.168.XXX.XXX # 注意这里一般改为自己本地的ip或者域名
③生成SSL证书
创建自签名密钥和证书对
openssl req -config localhost.conf -new -sha256 -newkey rsa:2048 -nodes -keyout localhost.key -x509 -days 365 -out localhost.crt
- openssl:这是用于创建和管理OpenSSL证书,密钥和其他文件的基本命令行工具。
- req:此子命令指定我们要使用X.509证书签名请求(CSR)管理。“X.509”是SSL和TLS为其密钥和证书管理所遵循的公钥基础结构标准。我们想要创建一个新的X.509证书,所以我们使用这个子命令。
- -x509:通过告诉实用程序我们要创建自签名证书而不是生成证书签名请求(通常会发生)来进一步修改上一个子命令。
- -nodes:这告诉OpenSSL跳过用密码保护我们的证书的选项。当服务器启动时,我们需要Nginx能够在没有用户干预的情况下读取文件。密码短语会阻止这种情况发生,因为我们必须在每次重启后输入密码。
- -days 365:此选项设置证书被视为有效的时间长度。我们在这里设置了一年。
- -newkey rsa:2048:这指定我们要同时生成新证书和新密钥。我们没有创建在上一步中签署证书所需的密钥,因此我们需要将其与证书一起创建。该rsa:2048部分告诉它制作一个2048位长的RSA密钥。
- -keyout:这一行告诉OpenSSL在哪里放置我们正在创建的生成的私钥文件。
- -out:这告诉OpenSSL在哪里放置我们正在创建的证书。
然后这个目录下就会多了两个文件localhost.crt
和localhost.key
localhost.crt
localhost.crt
,这就是生成的自签名证书(CRT 用于向CA请求证书的文件)
# localhost.crt-----BEGIN CERTIFICATE-----fdasfefFEQfJHJKJASCJLJIAJIj
...-----END CERTIFICATE-----
localhost.key
localhost.key
,CA私钥文件
# localhost.key-----BEGIN PRIVATE KEY-----VElSjtw86nTFKnOJhe2B9lk=
...-----END PRIVATE KEY-----
④配置nginx
为了能使用我们刚刚生成的ssl证书用于nginx配置,那么就需要将刚刚生成的localhost.crt
和localhost.key
拷贝一份到nginx的ssl
目录下
# 比如:我的nginx的目录是/etc/nginx
cd /etc/nginx/ssl
由于是自签的证书,所以最好是在nginx下的conf.d
目录单独创建一个配置文件用于做自签证书的环境配置,不过如果要让conf.d
下的文件能生效,就需要在nginx.conf
有这么一句话
进入到conf.d
下,创建一个配置文件localhost.conf
vim localhost.conf
配置文件内容如下
server {listen 80;listen 443 ssl http2;server_name 192.168.XXX.XXX; # 具体内容根据自身情况进行修改ssl_certificate /etc/nginx/ssl/localhost.crt;ssl_certificate_key /etc/nginx/ssl/localhost.key;location / {proxy_pass http://192.168.XXX.XXX:50000; # 具体内容根据自身情况进行修改,端口根据自身情况进行修改}
}
⑤nginx重新加载配置
nginx -s reload
⑥打开Web浏览器,然后在地址栏输入 https:// 及服务器的域名或IP
https://192.168.XXX.XXX
由于我们创建的证书未由您的某个浏览器的受信任证书颁发机构签名,所以会有不信任的警报跳出,但不重要,不影响我们进行一个测试
巨人的肩膀
从他人的工作中汲取经验来避免自己的错误重复,正如我们是站在巨人的肩膀上才能做出更好的成绩。
https://www.cnblogs.com/loleina/p/8418111.html
https://www.cnblogs.com/aaron-agu/p/10560659.html
https://blog.csdn.net/jackyzhousales/article/details/84030960
https://segmentfault.com/a/1190000012394467
本地自签https证书相关推荐
- jdk导入ssl证书(信任自签https证书)
前言 工作对接EMS,给的测试地址是https. 调接口的时候发现ssl证书认证不通过,就猜测是自签的证书了 1. 导出ssl证书 浏览器输入https链接,打开后提示证书不安全. 再打开地址栏左侧不 ...
- 自签 https 证书
续接上一篇 https 以及内网如何使用 的理论知识,这次来做个实践,用 openssl 和 keytool 为 weblogic 生成自签证书,并让浏览器信任. 如果使用了负载均衡(nginx或ap ...
- python sanic 设置ssl证书_配置自签https ssl证书
由于人们越来越重视网络安全,所以很多平台及系统都要求使用https方式接入.而且一些开源服务框架在调用时也只接受https请求,这将导致平时开发/测试时需要用到ssl证书的地方越来越多. 在2016年 ...
- 证书类型、自签CA证书、https双向认证(一篇就懂系列)
#博学谷IT学习技术支持# 文章目录 1.Linux准备环境 2.证书扩展名 3.自签CA证书 3.1 生成根证书 3.2 生成服务端证书 3.3 生成客户端证书 4.开启https,并校验客户端(双 ...
- 创建本地的https证书
创建本地的https证书 1.进入某个目录,shift+右键->在此处打开命令窗口 2.ip别名为cas.server.com,密钥文件casServer.keystore keytool -g ...
- 浏览器证书基础介绍和如何测试本地浏览器的HTTPS的完备性
最近一个项目是更新浏览器证书,这篇文章写给有相关需求的工程师. 1 首先,了解证书的基本原理和工作方式,然后了解证书的更新办法, 1 其次,最好是,如何去验证这些证书. 1 证书的基础知识: HTTP ...
- hbuilderx本地调试h5 vue应用的时候,怎么使用https证书?
使用uniapp在本地开发的时候,有时候是需要有https证书的,不然会提示证书错误.像camera的授权使用,还有gps地理位置的授权使用.如果没有https证书是很麻烦的. 那么可以在hbuild ...
- asp.net core 2使用本地https证书
不得不吐槽, 国内的各种开发资料网站已经... 是黄了吗? 还是百度已经黄了? 今天打开开发的asp.net core2.几的项目, 一F5运行后浏览器说无法提供安全连接, 大意就是https证书不行 ...
- 5.13.1.3 jmeter组件-非测试元件—HTTP代理服务器--HTTPS证书及其安装
关于HTTPS证书 HTTPS (Hyper Text Transfer Protocol over SecureSocket Layer) HTTP协议采用明文传输数据,如果是敏感数据,就不安全了, ...
最新文章
- 环球博览|中国六代机有望5年内问世
- oracle同时更新多列数据,ORACLE 11G 表联合更新多列
- eclipse 配置jsp
- 计算机系统结构相关技术,计算机系统结构第1章技术总结.pptx
- 为Docker容器设置静态IP
- 语法分析-C语言程序
- c++程序设计_基于proteus的51单片机开发实例30-模块化程序设计
- python实时显示温度变化_python实时温度绘制
- 游戏cg提取工具_记蒼の彼方のフォーリズム の CG提取
- 通过源代码研究ASP.NET MVC中的Controller和View(三)
- python中out什么意思_ref和out的使用与区别|python基础教程|python入门|python教程
- 再读《SAP德国造》
- 证券类私募主要需求及核心服务商
- word文档中向下的箭头是什么,怎么去掉
- java获取某年度有多少周_java获取一年共有多少周
- 关于奇异值分解的一些讨论
- 【Leetcode】最长递增子序列问题及应用
- Excel-VBA应用(5):设计问卷及数据回收统计系统
- VS2019中C#开发的bottom按钮在哪里?
- 快递与电商的恩怨纠纷