2020年最后一篇博文收官,提前祝各位园友新年快乐

  现在的后端开发,动不动就是需要https,或者说是需要ssl证书,既然没有正版的证书,那么我们只能自己制作ssl的证书了。

  说明:证书的制作采用的是openssl工具,如果没有,可以自行安装下,因为笔者是在linux(ubuntu)下制作,所以一般是使用包管理工具(apt)安装好了的

  如果觉得证书制作比较麻烦,这里是本文制作好的证书:https://pan.baidu.com/s/1MJ5YmuZiLBnf-DfNR_6D7A (提取码:c6tj),密码都是:123456

  园友可下载证书,然后根据后文nginx和IIS的使用方法来使用证书。

  

  制作SSL证书

  好了,先创建一个空目录,在这个空目录下开始制作:

  1、生成私钥Key

  执行下面的命令生成私钥Key:  

    sudo openssl genrsa -des3 -out demo.key 1024
# openssl genrsa 命令是会用来生成RSA私有秘钥,不会生成公钥,因为公钥提取自私钥
   # -des3  指定加密私钥文件用的算法,可以不用指定加密算法(自己测试用的话推荐不指定加密算法),可选:-des|-des3|-idea
   # -out demo.key  将生成的私钥保存至指定文件
   # 1024  指定要生成的私钥的长度(单位 bit),默认为1024,一般要么就是1024或者2048

  生成过程中会让输入密码,这里我测试使用的,直接输入了:123456

  :上面生成的demo.key中使用了-des3加密算法参数,所以在部署使用后,如果需要重启,可能会要求输入密码确认,比如nginx -s reload时,这样在自己测试使用时就很麻烦了

  解决办法有两个:

  a.生成密码后再删除密码

  比如上面生成了一个demo.key的私钥文件,执行下面的命令可以重置:  

    sudo openssl rsa -in demo.key -out temp.key && sudo rm demo.key && sudo mv temp.key demo.key

  b.在生成私钥是不要指定-des3参数

  比如上面的生成demo.key的命令换成:  

    sudo openssl genrsa -out demo.key 1024

  2、生成证书请求文件

  执行下面的命令生成证书请求文件:

    sudo openssl req -new -key demo.key -out demo.csr
# openssl req 命令主要的功能有,生成证书请求文件, 查看验证证书请求文件,还有就是生成自签名证书
   # -new 说明生成证书请求文件
   # -key demo.key 指定已有的秘钥文件生成秘钥请求,只与生成证书请求选项-new配合。
   # -out demo.csr 指定生成的证书请求或者自签名证书名称

  命令执行后会让输入一些证书信息,具体可参考下图:

  

  3、生成crt证书文件

  执行下面的命令生成证书文件:  

    sudo openssl x509 -req -days 36500 -in demo.csr -signkey demo.key -out demo.crt
# openssl x509 命令主要用于输出证书信息,签署证书请求文件、生成自签名证书、转换证书格式等
   # -req 表明后面输入的是一个证书请求文件
   # -days 36500 证书的有效期,单位是天(一百年后我们再见吧)
   # -in demo.csr 指定输入文件
   # -signkey demo.key 签名证书秘钥
   # -out demo.crt 指定证书的输出文件

  如果提示类似如下,说明生成成功了:

  

  4、生成pfx证书安装包

  执行下面命令生成安装包文件:  

    sudo openssl pkcs12 -export -inkey demo.key -in demo.crt -out demo.pfx
# openssl pkcs12 命令用于生成和分析pkcs12文件
   # -export 指定了一个PKCS#12文件将会被创建
   # -inkey demo.key 指定私钥文件的位置。如果没有被指定,私钥必须在-in filename中指定
   # -in demo.crt 指定私钥和证书读取的文件
   # -out demo.pfx 指定输出的pkcs12文件

  执行命令后会输入密码,这里我输入同样是:123456  

  至此,证书就制作完成了,我们得到4个文件:

     

    demo.crt:crt证书文件,nginx配置时可以用到
demo.csr:crt证书请求文件,现在基本上没什么用了
demo.key:私钥,nginx配置时可以用到
demo.pfx:证书安装包,iis部署时可以用到

  Nginx配置使用证书

  创建一个nginx配置配置文件:  

  server {
listen 4430 ssl;
listen [::]:4430 ssl; ssl on;
ssl_certificate /home/feng/ssl/demo.crt;  #crt证书文件
ssl_certificate_key /home/feng/ssl/demo.key;  #私钥文件
ssl_session_timeout 5m;
ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on; root /var/www/html;
index index.html index.htm index.nginx-debian.html; server_name _; location / {
try_files $uri $uri/ =404;
}
  }

  注意,这里我为了区分,没有使用默认的443端口,而是使用了4430端口

  接着使用 nginx -t 验证和使用 nginx -s reload 重新加载后,使用浏览器访问4430可访问到了,只不过会提示存在风险,毕竟证书是自己制作的,如下图:

  

  点击高级=》接受风险就可以了

  IIS配置使用证书   

  IIS配置证书需要pfx证书安装包(demo.pfx),这里以IIS7为例:

  打开IIS,在主页中点击【服务器证书】

  

  点击右边操作的【导入】,选择创建好的pfx证书文件,输入创建文件时输入的密码(上面第4步创建pfx文件时输入的密码,这里是123456):

  

  接着选择你要设置添加https请求类型的网站,在右边操作中点击【绑定】,然后按照下图操作:

  

  然后重启一下站点,在指定的端口使用https请求了

  注:如果你的电脑安装了VMware等工具,443端口可能启动报错,可能提示:另一个程序正在使用此文件,进程无法访问。解决办法参考:http://www.youxia.org/2018/01/36418.html

  

  程序中使用证书

  有时,我们还可能需要在程序中使用证书,比如在使用Grpc,我们默认是使用https的,或者我们只是想使用https请求,那么我们可能需要在程序中使用证书来操作,比如.net core中使用自制证书来生成https请求的项目:

  我们创建一个.net core的web项目,使用上面创建的demo.pfx,修改Program.cs:  

    public class Program
{ public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
} public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureKestrel(options =>
{
options.ListenAnyIP(5000, listenOptions =>
{
listenOptions.UseHttps(@"C:\inetpub\wwwroot\demo.pfx", "123456");
});
});
webBuilder.UseStartup<Startup>();
});
}

  启动之后就可以使用https请求访问了

简单的制作ssl证书,并在nginx和IIS中使用的更多相关文章

  1. Https系列之一:https的简单介绍及SSL证书的生成

    Https系列会在下面几篇文章中分别作介绍: 一:https的简单介绍及SSL证书的生成二:https的SSL证书在服务器端的部署,基于tomcat,spring boot三:让服务器同时支持http ...

  2. 在macOS平台下制作SSL证书,免费域名通配符证、单域名证书、多域名证书教程

    1.安装 home-brew 2.安装 certbot 在终端执行下面命令 brew install certbot 3.制作SSL证书 第一步: 在终端执行下面命令 sudo certbot cer ...

  3. openssl 自己制作ssl证书:自己签发免费ssl证书,为nginx生成自签名ssl证书

    server { listen 80; listen 443 ssl; server_name ~^((cloud)|(demo-cloud)|(demo2-cloud)|(approval1))(( ...

  4. 制作SSL证书

    上一节介绍了OpenSSL的目录结构,本节介绍一下SSL证书的制作. OpenSSL安装后建议把其中的bin目录添加到系统环境变量中,方便以后操作. 建立一个新的目录SSL专门用来制作证书. 建立证书 ...

  5. Godaddy ssl证书配置到nginx

    打开终端,输入以下命令 openssl req -new -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr 生成过程会询问几个常见问 ...

  6. 第二节:SSL证书的申请、配置(IIS通用)及跳转Https请求的两种方式

    一. 相关概念介绍 1. SSL证书服务 SSL证书服务由"服务商"联合多家国内外数字证书管理和颁发的权威机构.在xx云平台上直接提供的服务器数字证书.您可以在阿里云.腾讯云等平台 ...

  7. StartCom免费ssl证书申请以及在Tomcat环境中的配置

    提示:建议以下操作不使用谷歌浏览器(该网站的证书不识别...),可以看到我的截图中谷歌换成了ie(没装火狐)...建议该申请使用火狐 前面介绍了下自签名的ssl证书,虽然可以实现https协议访问,但 ...

  8. 自己制作ssl证书:自己签发免费ssl证书,为nginx生成自签名ssl证书

    这里说下Linux 系统怎么通过openssl命令生成 证书. 首先执行如下命令生成一个key openssl genrsa -des3 -out ssl.key 1024 然后他会要求你输入这个ke ...

  9. linux系统自签发免费ssl证书,为nginx生成自签名ssl证书

    首先执行如下命令生成一个key openssl genrsa -des3 -out ssl.key 1024 然后他会要求你输入这个key文件的密码.不推荐输入.因为以后要给nginx使用.每次rel ...

随机推荐

  1. 数据源(Data Source

    数据源(Data Source)顾名思义,数据的来源,是提供某种所需要数据的器件或原始媒体.在数据源中存储了所有建立数据库连接的信息.就像通过指定文件名称可以在文件系统中找到文件一样,通过提供正确的数 ...

  2. 项目cobbler+lamp+vsftp+nfs+数据实时同步(inotify+rsync)

    先配置好epel源 [root@node3 ~]#yum install epel-release -y 关闭防火墙和selinux [root@node3 ~]#iptables -F [root@ ...

  3. SprignBoot整合Spring Data Elasticsearch

    一.原生java整合elasticsearch的API地址 https://www.elastic.co/guide/en/elasticsearch/client/java-api/6.2/java ...

  4. Spring 的 init-method 和 destory-method

    关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种 第一种注解: 通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 ...

  5. centos k3s部署

    目录 一.k3s介绍 二.在线安装 三.离线安装 四.高可用安装 五.配置k3s镜像仓库 六.Kubernetes 仪表盘 七.常用命令 八.参考 一.k3s介绍 1.k3s是一个轻量级的 Kuber ...

  6. Jenkins代码检查

    目录 一.静态代码分析 二.规范检查 PMD进行检查 分析器区别 三.持续代码质量检测 Maven与SonarQube集成 Jenkins与SonarQube集成 代码扫描 SonarQube集成p3 ...

  7. tryParse的用法。

    tryParse的用法. int.Parse()是一种类容转换:表示将数字内容的字符串转为int类型.如果字符串为空,则抛出ArgumentNullException异常:如果字符串内容不是数字,则抛 ...

  8. 以太网/ IPV4/IPV6包头,TCP包头格式回顾

    问题:以太网数据包,承载的数据内容大小46~1500字节,是如何来的? 以太网数据包结构  以太网协议规定最小链路层数据包(帧)为64字节,其中以太网首部+尾部共计18字节(源/目的MAC12字节:上 ...

  9. 在JSP页面里,时间控件的JS位置在下面然后就显示不出来

    在JSP页面里,时间空间的JS位置在下面然后就显示不出来,放到前面然后就显示出来了, 情何以堪啊,开始还以为是什么错误.

  10. uniapp框架如何实现仿微信相册:图视频过滤、相册选择功能

    今天我们分享基于uniapp + vue实现仿微信相册插件实例,该插件完全还原了微信相册的功能 1: 相册选择 2: 图片,视频类型过滤 3: 自定义相册界面UI 技术实现 开发环境:Hbuilder ...