美文网首页iOS开发之常用技术点
简单搭建属于自己的TLS服务器

简单搭建属于自己的TLS服务器

作者: 9dfaf364d57f | 来源:发表于2018-07-10 15:17 被阅读23次

    目录
    1、mac环境下部署Tomcat服务器
    2、配置单项校验的TLS服务器
    3、配置双向校验的TLS服务器

    1、mac环境下部署Tomcat服务器

    首先,进到Tomcat官网进行下载,这里使用Tomcat8,其他版本在官网也可以找到。

    本小节是基于mac环境,window环境可能会稍有不同,请另行百度或google,但2、3小节部分平台。

    下载后,将压缩包解压,并命名为“ApacheTomcat”(个人喜好),放置到/Users/xxx(你的mac用户名)/Library文件夹中。

    打开终端,进入到bin目录下,可借用下面命令

    cd /Users/xxx(你的mac用户名)/Library/ApacheTomcat/bin
    

    通过以下命令开启tomcat

    ./startup.sh
    

    开启后,在浏览器中输入http://localhost:8080/,如果看到如下界面,说明已经部署成功。

    通过以下命令关闭tomcat

    ./startup.sh
    

    2、配置单项校验的TLS服务器

    进入到Tomcat根目录的conf,打开server.xml文件,在Service标签(敲黑板!!小盆友当时大意,放错位置,导致浪费了些时间)中添加如下代码

    <Connector 
          SSLEnabled="true" 
          acceptCount="100" 
          disableUploadTimeout="true" 
          enableLookups="true" 
          keystoreFile="/Users/xiaopenyou/Desktop/ceri/zinc_server.jks" 
          keystorePass="123456" 
          maxSpareThreads="75" 
          maxThreads="200" 
          minSpareThreads="5" 
          port="8443" 
          protocol="org.apache.coyote.http11.Http11NioProtocol" 
          scheme="https" 
          secure="true" 
          sslProtocol="TLS"
          clientAuth="false"
          />
    

    代码中需要注意的三个点:

    • keystoreFile:你的密钥路径(密钥如何生成
    • keystorePass:你的密钥密码
    • clientAuth:为false时,说明为单向校验,双向校验下一小节讲

    设置完成保存后,重新启动服务器。在浏览器中输入https://localhost:8443/,你会看到如下熟悉的界面,说明你已经设置成功,因为这里使用的是自签名的证书,所以浏览器显示“不安全”,选择下面红色框,便能进入到真正的Tomcat界面,内容和http://localhost:8080/一样,只是多了“不安全”的提示。


    3、配置双向校验的TLS服务器

    进入到Tomcat根目录的conf,打开server.xml文件,在Service标签(敲黑板!!小盆友当时大意,放错位置,导致浪费了些时间)中添加如下代码

    <Connector 
          SSLEnabled="true" 
          acceptCount="100" 
          disableUploadTimeout="true" 
          enableLookups="true" 
          keystoreFile="/Users/zinc/Desktop/ceri/zinc_server.jks" 
          keystorePass="123456" 
          maxSpareThreads="75" 
          maxThreads="200" 
          minSpareThreads="5" 
          port="8443" 
          protocol="org.apache.coyote.http11.Http11NioProtocol" 
          scheme="https" 
          secure="true" 
          sslProtocol="TLS"
          clientAuth="true"
          truststoreFile="/Users/zinc/Desktop/ceri/zinc_client_for_sever.jks" 
          truststorePass="123456"
          />
    

    代码中需要注意的三个点:

    • keystoreFile:你的密钥路径(密钥如何生成
    • keystorePass:你的密钥密码
    • clientAuth:为true时,说明为双向校验
    • truststoreFile:客户端的证书jks文件路径

    注意!!!这里是jks文件,需要将客户端证书(即cer文件)转换为jks文件,如何转换可以参考https://www.jianshu.com/p/bfc15dbeedf1第五小节。(这里当时也浪费了些许时间,一开始直接设置客户端证书,导致没法正常使用)

    • truststorePass:客户端的证书jks文件的密码

    设置完成保存后,重新启动服务器。在浏览器中输入https://localhost:8443/,会看到如下界面,说明已经设置成功,因为双向校验中,客户端需要将自己的公钥传输给服务器进行验证,但是浏览器并没有公钥,所以会TLS握手失败,导致无法连接。

    相关文章

      网友评论

        本文标题:简单搭建属于自己的TLS服务器

        本文链接:https://www.haomeiwen.com/subject/vvbfpftx.html