用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.io
和as2.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.io
和as2.io
。下面是as2.io
这个证书的创建过程:
as1.io
的证书创建过程也是类似。
创建好证书以后,接下来就是配置nginx
使用这个证书,并如上图所示配置好两个server
。
关于nginx的配置过程在本文的下一篇当中介绍。