免费生成https证书以及配置

http升级到https需要在nginx的配置中加入证书信息,查询资料后确定生成证书两种方案
 

第一种:自签名证书,然后开启 CloudFlare 的 CDN 服务

 
//确定是否安装openssl
which openssl
//如果没有安装,通过apt-get或者yum等方式安装即可
sudo apt-get install openssl
//生成一个名为“ssl.key”的 RSA key文件:执行结果:生成ssl.pass.key 和 ssl.key
openssl genrsa -des3 -passout pass:x -out ssl.pass.key 2048
openssl rsa -passin pass:x -in ssl.pass.key -out ssl.key
//删除中间文件
rm ssl.pass.key
接着,利用已经生成的 ssl.key 文件,进一步生成 ssl.csr 文件:
openssl req -new -key ssl.key -out ssl.csr
执行此行命令会提示输入密码,按回车即可,因为前面我们在生成 ssl.key 时选择了密码留空。
最后我们利用前面生成的 ssl.key 和 ssl.csr 文件来生成 ssl.crt 文件,也就是自签名的 SSL 证书文件:
openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt
这一步之后,我们得到一个自签名的 SSL 证书文件 ssl.crt,有效期为 365 天。此时,ssl.csr 文件也已经不再被需要,可以删除掉了:
rm ssl.csr
 
参考地址:
https://hinine.com/create-and-deploy-a-self-signed-ssl-certificate-to-nginx/
 

第二种:借助于Let's Encrypt

 
Let's Encrypt 简介
如果要启用HTTPS,我们就需要从证书授权机构(以下简称CA) 处获取一个证书,Let's Encrypt 就是一个 CA。我们可以从 Let's Encrypt 获得网站域名的免费的证书。
Certbot 简介
Certbot 是Let's Encrypt官方推荐的获取证书的客户端,可以帮我们获取免费的Let's Encrypt 证书。
 
1. 下载 certbot
最好是根据官方网址来处理:
https://certbot.eff.org/
 
2. 生成免费证书
官方文档有比较详细的说明,根据自己的情况来选择
https://certbot.eff.org/docs/using.html
 
注意:官方限制了每周的申请次数,如果你进行开发测试,生成证书的时候加上 --staging参数,这样就不必太担心数量的限制了
 
下面介绍几种方法
无论哪一种方法,实质都是验证你是不是拥有这个域名,只不过实现的途径不同
 
1>webroot方法,此方法会在你配置的服务器站点目录下创建 .well-known 文件夹,这个文件夹里面包含了一些验证文件,certbot 会通过访问 http://example.com/.well-known/acme-challenge 来验证你的域名是否绑定的这个服务器
 
如果你自己没有创建相应的站点也可以自己加入一个比较通用的配置
location ^~ /.well-known/acme-challenge/ { default_type "text/plain"; root /usr/share/nginx/html; } location = /.well-known/acme-challenge/ { return 404; }
 
certbot certonly --webroot -w 网站根目录 -d example.com -w 网站根目录 -d www.example.com
 
2>standalone方法,如果你不想使用你自己的服务器,这个方法是个选择,但是需要注意要关闭相应的端口或者是80或者443(以你自己选择的方式决定)
使用80端口: certbot certonly --standalone --preferred-challenges http -d example.com
使用443端口: certbot certonly --standalone --preferred-challenges tls-sni -d example.com
 
3>manual方法,如果你想在任意的linux主机下生成证书,那么这种方法可能是一个选择,但是要注意的是验证过程中会生成一个字符串,需要你将这个随机的字符串添加到你dns服务器才可以完成验证操作.
certbot certonly --manual --preferred-challenges dns -d archerwong.cn
 
3.删除证书,如果你生成的时候添加了 --stagin参数,下面的命令也要添加
certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem
certbot delete --cert-name example.com
 
4.证书更新
sudo certbot renew --dry-run
 
5.丰富的参数选择
以上的各种命令其实都是可以加入很多参数,最好是查找下官方文档
https://certbot.eff.org/docs/using.html
 
当然官方提供了很多种生成证书的方法,你可以根据你自己的实际情况进行选择
 
证书生成完毕后,我们可以在 /etc/letsencrypt/live/ 目录下看到对应域名的文件夹,里面存放了指向证书的一些快捷方式。
 
生成证书后,配置 Nginx
 
打开 nginx server 配置文件加入如下设置:
server {
  listen 443 ssl on;
  ssl_certificate /etc/letsencrypt/live/网站域名/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/网站域名/privkey.pem;
  ## 其他配置
}
 
强制跳转 https
https 默认是监听 443 端口的,没开启 https 访问的话一般默认是 80 端口。如果你确定网站 80 端口上的站点都支持 https 的话加入下面的配件可以自动重定向到 https
server {
  listen 80;
  server_name your.domain.com;
  return 301 https://$server_name$request_uri;
}
 
参考地址:
https://zhuanlan.zhihu.com/p/21286171
https://zhuanlan.zhihu.com/p/24996258
 
 
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/redirect/p/6937437.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/416606.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis 4.0.9 centos7 双机集群安装

开启limits限制 sudo bash -c cat >> /etc/security/limits.conf <<-EOF * soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * hard nproc 131072EOFreboot重启 安装redis 两台机器都运行 yum install -y wget gcc wget http://download.redis.io/…

关于毕业的一些事情

这篇日志&#xff0c;算是日记吧。就当做日记。 今天上午8点開始在8-302举行答辩&#xff0c;关于毕业论文&#xff0c;就是用的原先的智能问答机器人。也还算顺利。无论咋样&#xff0c;过是没问题。 晚上在校园食代举行班级谢师宴&#xff0c;老师来了15位左右&#xff0c;跟…

递归树思路总结思考

递归思路 传入数组 传入单个对象 传入数组 内部先遍历进行单个对象处理&#xff0c; 再递归单个对象的children 传入对象 内部先处理当前对象&#xff0c;再遍历对象children&#xff0c;对每个children进行递归调用。 需要处理返回值的情况 一种是传入对象指针&#xff…

前端学习(2441):删除处理完成

request.js <template> <div class"artical-container"><!--卡片--><el-card class"filter-card"><div slot"header" class"clearfix"><!--面包屑导航--><el-breadcrumb separator-class&quo…

5、用枚举值表示状态、选项、状态码

一、C语言中1、C语言中的枚举类型enum。在以一系列常量来表示错误状态码或可组合的选项时&#xff0c;极宜使用枚举为其命名。2、定义一个enumenum personAgeState { personAgeStateLitter,personAgeStateBigger};property (nonatomic, assign) enum personAgeState personAge;…

openjdk17体验

jdk17是继jdk8和jdk11之后的LTS版本&#xff0c;该版本支持到2029年12月&#xff0c;下载地址 https://jdk.java.net/17/ 我是ubuntu64位环境&#xff0c;下载linux/x64版本&#xff0c;解压 打开idea创建一个新项目&#xff0c;添加jdk17并设置为jdk17 写个helloworld packa…

linux zip分卷压缩解压命令

linux下有时因为文件过大&#xff0c;传输过程中需要将源文件压缩为多个zip文件&#xff0c;以下是具体方法 压缩 zip -r -s 1g split.zip fold/ -s 1g代表分卷大小 split.zip为压缩包名 fold/为待压缩的目录 解压 zip -s 0 split.zip --out unsplit.zip unzip unslit.zip…

不确定屏幕大小的弹窗垂直居中(用了box方法)

对于父元素高度不确定&#xff0c;又要实现上下左右对齐&#xff0c;只需要在弹窗的父元素上使用box布局&#xff0c;控制弹窗上下左右居中 <div class"pop_wrap"><div class"pop"></div> </div> .pop_wrap{display:-webkit-box;-…

npm i依赖版本兼容问题处理

npm i报错提示 whqwhq-Z270P-D3:/data/code/builder_git/xx$ npm i npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: webbq-cmm1.1.0 npm ERR! Found: webpack3.12.0 npm ERR! node_modules/webpack npm ER…

前端学习(2449):发布文章组件

request.js <template> <div class"artical-container"><!--卡片--><el-card class"filter-card"><div slot"header" class"clearfix"><!--面包屑导航--><el-breadcrumb separator-class&quo…

centos7 geenplum5.x postgis开源版本编译

下载5.1 https://codeload.github.com/greenplum-db/gpdb/tar.gz/5.1.0 基础环境 tar xzvf gpdb-5.1.0.tar.gz cd gpdb-5.1.0 参照README.md、README.amazon_linux准备依赖 yum install -y epel-release yum install -y python-pip sudo yum -y install git gcc readline-dev…

linux查看基础硬件信息

#CPU核数 cat /proc/cpuinfo | grep "cpu cores" | uniq #CPU线程数 cat /proc/cpuinfo| grep "processor"| wc -l #内存大小 cat /proc/meminfo | grep MemTotal #硬盘信息 fdisk -l

前端学习(2450):页面布局制作

request.js <template> <div class"artical-container"><!--卡片--><el-card class"filter-card"><div slot"header" class"clearfix"><!--面包屑导航--><el-breadcrumb separator-class&quo…

前端学习(2451):表单数据的绑定

request.js <template> <div class"artical-container"><!--卡片--><el-card class"filter-card"><div slot"header" class"clearfix"><!--面包屑导航--><el-breadcrumb separator-class&quo…

mysql string types ---- mysql 字符类型详解

一、mysql 中包涵的字符类型&#xff1a; [national] char [(m)] [character set charset_name] [collate collation_name] [national] varchar [(m)] [character set charset_name] [collate collation_name]binary(m) -- 和char 只不过它用来保存二进制字节串…

前端学习(2452):封装数据接口

request.js <template> <div class"artical-container"><!--卡片--><el-card class"filter-card"><div slot"header" class"clearfix"><!--面包屑导航--><el-breadcrumb separator-class&quo…

【NOIP2016】换教室

题目描述 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程。 在可以选择的课程中,有2n节课程安排在n个时间段上。在第 i ( 1≤ i≤n)个时同段上, 两节内容相同的课程同时在不同的地点进行, 其中, 牛牛预先被安排在教室 ci上课, 而另一节课程在教室…