一看必会系列:k8s 练习9 ingress ssl https 多证书实战

来源:本站原创 Kubernetes 超过311 views围观 0条评论

ingress nginx https ssl多证书
创建私有证书
# openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 -keyout xxx.yyy.key \
-out xxx.yyy.crt \
-subj “/CN=*.xxx.yyy/O=xxx.yyy”
方案1.每个证书对应一个 name  #官方推荐
[root@k8s-master ssl]# kubectl create secret tls tls.ccie.wang –key ccie.wang.key –cert ccie.wang.crt
[root@k8s-master ssl]# kubectl create secret tls tls.xxx.yyy –key xxx.yyy.key –cert xxx.yyy.crt

查看证书
[root@k8s-master ssl]# kubectl get secret
NAME                  TYPE                                  DATA   AGE
default-token-tkfmx   kubernetes.io/service-account-token   3      30d
tls.ccie.wang         kubernetes.io/tls                     2      78m
tls.xxx.yyy           kubernetes.io/tls                     2      12s
[root@k8s-master ssl]#
创建ingress https服务
[root@k8s-master ssl]# kubectl apply -f xxx.yyy.yaml
ingress.extensions/nginx-xxx-yyy-test created

查看ingress状态
[root@k8s-master ssl]# kubectl get ingress
NAME                   HOSTS              ADDRESS   PORTS     AGE
ingress-nginx-test     in2.ccie.wang                80        23h
nginx-ccie-wang-test   in4ssl.ccie.wang             80, 443   37m #自动生成80、443端口
nginx-xxx-yyy-test     in4ssl.xxx.yyy               80, 443   9s
[root@k8s-master ssl]#
验证
root@docker01:/etc/nginx/conf.d# curl -s https://in4ssl.xxx.yyy -k |head -5
<html ng-app=”redis”>
<head>
<title>Guestbook</title>
<link rel=”stylesheet” href=”bootstrap.min.css”>
<script src=”angular.min.js”></script>
root@docker01:/etc/nginx/conf.d#
方案2.所有证书对应一个namE 测试不可用
#将两个域名证书放到一个secret里
# kubectl create secret generic tow-cert \
–from-file=ccie.wang.key  \
–from-file=ccie.wang.crt  \
–from-file=xxx.yyy.key  \
–from-file=xxx.yyy.crt -n default

查看Secret
[root@k8s-master ssl]# kubectl describe secret tow-cert
Name:         tow-cert
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
#包含两个证书
ccie.wang.crt:  3622 bytes
ccie.wang.key:  1732 bytes
xxx.yyy.crt:    1143 bytes
xxx.yyy.key:    1704 bytes
实际验证发现 证书信息是不对的。而且证书加载的是default-fake-certificate.pem
可能需要confitmap进行挂载,但这样比单独配置证书更麻烦
正常应该是 tow-cert
ssl_certificate         /etc/ingress-controller/ssl/default-fake-certificate.pem;
ssl_certificate_key     /etc/ingress-controller/ssl/default-fake-certificate.pem;

————–报错
root@docker01:/etc/nginx/conf.d# curl https://!$
curl https://in4ssl.xxx.yyy
curl: (60) SSL certificate problem: self signed certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

使用curl会报证书错,因为这个是私有证书,用下面方式可以解决

curl需要加上-k,wget需要加上–no-check-certificate:
curl https://172.16.0.168/api/v4/projects?search=xxxx -k

wget ‘https://172.16.0.168/api/v4/projects?search=xxxx -k’ –no-check-certificate

文章出自:CCIE那点事 http://www.jdccie.com/ 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。 禁止全文转载。
本文链接:http://www.jdccie.com/?p=4131转载请注明转自CCIE那点事
如果喜欢:点此订阅本站
  • 相关文章
  • 为您推荐
  • 各种观点

暂时还木有人评论,坐等沙发!
发表评论

您必须 [ 登录 ] 才能发表留言!