背景:
一上云租户使用平台提供的istio网关,开启https,然后发现访问一直链接重置。
排查过程:
1、检查代理的服务,进行了模拟访问是正常的,排除代理服务的问题。
2、检查网关实例的日志发现无异常,调用网关的接口,查看相应的路由是否添加进去,发现路由添加成功的。
3、模拟访问网关实例,看看网关日志是否记录请求进来。访问结果如下:
sh-4.2# curl -k https://127.0.0.1:30081/muc-app web/telecom
curl: (35)IcP connection reset by peer
通过模拟访问,查看网关日志实例,并未有相关请求日志进入。后来一度认为是开发版本的问题,也找咱们相关网关开发查看,也并未发现问题。
解决方案:
后来自己查询相关istio官方文档,猜测可能是证书存在问题,然后根据官方提供的方式生成证书,重新配置,发现可以正常访问了。如下图:
curl -k --insecure https://127.0.0.1:30081/muc-app-web/telecom\<meta http-equiv=pragma content=no-caccharset=utf-8><meta"no-cache, no-store, must-revalidate">link rel-icon href data:;base4,>title>m程v名显<link rel-"sho<link href-/muc-ap-web/static/css/ap.7c3af2faeeabe3630a65aba7cb7328.css rel-stylesheet>x/headxbodyxdiv id-ap>x/divx<script type-text/javascript3f8754646c1ab7c2.js>x<script typetext/javascript src=/muc-app-web/static/js/vendor.78760e801beaf3de05.jsx/scriptxscript type-text/javasc79a587675da4fd,is>[root@xz-official-view-69d5448798-69spm apps]#
至此问题算是解决,也同步给开发。
相关证书生成命令如下:
mkdir example_certs1
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=example Inc./CN=example.com' -keyout example_certs1/example.com.key -out example_certs1/example.com.crt
openssl req -out example_certs1/httpbin.example.com.csr -newkey
rsa:2048 -nodes -keyout example_certs1/httpbin.example.com.key -subj
"/CN=httpbin.example.com/O=httpbin organization" openssl x509 -req
-sha256 -days 365 -CA example_certs1/example.com.crt -CAkey example_certs1/example.com.key -set_serial 0 -in
example_certs1/httpbin.example.com.csr -out
example_certs1/httpbin.example.com.crt
mkdir example_certs2
openssl req -x509 -sha256 -nodes -days 365
-newkey rsa:2048 -subj '/O=example Inc./CN=example.com' -keyout example_certs2/example.com.key -out example_certs2/example.com.crt
openssl req -out example_certs2/httpbin.example.com.csr -newkey
rsa:2048 -nodes -keyout example_certs2/httpbin.example.com.key -subj
"/CN=httpbin.example.com/O=httpbin organization" openssl x509 -req
-sha256 -days 365 -CA example_certs2/example.com.crt -CAkey example_certs2/example.com.key -set_serial 0 -in
example_certs2/httpbin.example.com.csr -out
example_certs2/httpbin.example.com.crt
使用httpbin.example.com.key httpbin.example.com.crt