美文网首页Java
配置http和tcp支持ssl

配置http和tcp支持ssl

作者: allanYan | 来源:发表于2016-09-26 16:16 被阅读841次

最近由于apple ATS的关系,公司的所有后台都需要采用安全连接;后台对外的接口主要包括两种形式:

http

对外服务都是通过nginx进行访问,目前采用的是客户端单向认证服务端,因此只要在nginx进行配置即可:

server {
    ssl on;
    ssl_certificate /usr/local/nginx/conf/server.crt;
    ssl_certificate_key /usr/local/nginx/conf/server.key;
}

另外为了提高nginx ssl的性能,可以增加额外的配置项,例如ssl_session_cache

证书和私钥都是PEM格式(文本),如果是自签名的,可以通过如下方式产生:

openssl genrsa -des3 -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

由于客户端需要验证服务端,因此需要将证书分发给客户端:

  1. ios:
openssl x509 -inform PEM -outform DER -in server.crt -out ios.cer

注:ios需要二进制格式的证书,因此需要转换下

  1. android:
keytool -import -alias push -file server.crt -keystore android.bks -storepass ‘123456’ -keypass ‘123456’ -storetype BKS -providerClass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath bcprov-jdk15on-146.jar

注:ios需要BKS格式的证书,和java端的JKS类似,因此需要转换下

  1. java:
keytool -import -alias push -file server.crt  -keystore java.jks

tcp

tcp是通过haproxy进行配置:

bing ip:port ssl crt /usr/local/haproxy-1.6.3/server.pem

可以通过如下方式产生:

cat server.crt server.key |tee server.pem

注:server.pem格式为PEM,由证书和私钥组成,服务器发送客户端只会发送证书;实际上nginx也可以把证书和私钥放在一个文件

测试

安装配置好之后,可以通过nmap提供的工具查看服务端的证书和协议版本,算法套装等信息,下图以百度为例:

nmap --script=ssl-cert,ssl-enum-ciphers -p 443 www.baidu.com
或
openssl s_client -tls1 -connect www.baidu.com:443 
nmap.png

**注意:nmap提高的脚本,对端口进行了限制,因此如果你的应用的访问端口不是443,需要修改脚本,通常情况下,脚本位于/usr/share/nmap/scripts,

  1. ssl-cert.nse:修改LIKELY_SSL_PORTS变量
  2. ssl-enum-ciphers.nse:修改SSL_PORTS变量

其它

Java对SSL,TLS的支持情况,可以参考这篇文章,为避免出现类似情况,需要通过ssl_ciphers指令进行相关配置;
另外由于openssl会用到随机数,可以参考这篇文章进行配置;

参考资料

1.配置https服务器
2.haproxy ssl配置
3.Setting up SSL termination for a TCP upstream
4.Netty ssl
5.Ios9之适配ATS

相关文章

  • 配置http和tcp支持ssl

    最近由于apple ATS的关系,公司的所有后台都需要采用安全连接;后台对外的接口主要包括两种形式: http 对...

  • nginx架设更新服务器

    更新服务器采用nginx架设,需要http和https同时访问。 使用ssl模块配置同时支持http和https并...

  • HTTPS配置优化及注意点

    Nginx官网反向代理时配置SSL证书,需要enable ngx_http_ssl_module模块,且需要支持的...

  • APP使用HTTP2协议的一点小收获

    前几天提到网络连接和ssl握手延迟,想到SLB已经配置支持HTTP/2了,就想确认下: curl —http2 -...

  • 本人小记HTTPS

    What is HTTPS? HTTPS = HTTP + SSL/TLS 。 SSL/TLS基于TCP,工作在O...

  • Nginx模块之ssl模块

    ngx_http_ssl_module配置 ssl on | off是否启用ssl listen 443 ssl在...

  • HTTPS精要详解

    https是http协议的安全版本,在HTTP和TCP层中加入了SSL层.https之所以是安全的,就依赖于SSL...

  • 计算机基础知识分享-1

    1. HTTP协议 Http [TSL,SSL]|---|---TCP |IP |数据链路层 | Tips HT...

  • 20171101 HAProxy

    HAProxy简介HAProxy配置ACL配置TCP转发SSL转发 一、HAProxy简介: (一)HAProxy...

  • HTTPS相关知识细节

    一、背景知识 1.1.基本术语HTTP|HTTPS|SSL|TLS1.2.HTTP和TCP的关系,如长连接和短连接...

网友评论

    本文标题:配置http和tcp支持ssl

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