阿男的小窝

View the Project on GitHub

用nginx架设tls/sni服务(一)

SNI用来支撑virtual host的多域名ssl通信问题,具体细节可以参考wikipedia:

本文介绍在nginx里面配置使用sni的过程。我们可以使用nginx的docker image:

在本地启动这个容器:

$ docker run -it nginx bash

然后查看安装的nginx里面是否有SNI模块:

$ nginx -V

可以看到nginx官方提供的image是默认自带了TLS SNI的支撑,我们直接可以使用。接下来要创建两个域名,用来测试nginx配置。两个域名可以自己取名为as1.ioas2.io

我们可以使用openssl来创建两个自签名的数字证书:

$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./as1.key -out ./as1.crt
$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./as2.key -out ./as2.crt

在生成数字证书的时候,两个数字证书的Common Name分别设置成as1.ioas2.io。下面是as2.io这个证书的创建过程:

as1.io的证书创建过程也是类似。

创建好证书以后,接下来就是配置nginx使用这个证书,并如上图所示配置好两个server

关于nginx的配置过程在本文的下一篇当中介绍。