{"componentChunkName":"component---src-templates-post-template-jsx","path":"/works/posts/2022-01-27--001","result":{"data":{"site":{"siteMetadata":{"title":"Blog by Eunyoung","subtitle":"작업 기록 블로그","copyright":"© All rights reserved.","author":{"name":"EunYoung","twitter":"#"},"disqusShortname":"","url":"https://ssongey.github.io"}},"markdownRemark":{"id":"c4662cae-d66f-5d8e-8b68-fd96e537f9a0","html":"<p><span class=\"title__sub1\"> ■ 도메인에 적용되어 있는 인증서 확인 방법 </span>\n<span class=\"title__sub2\"> 1. openssl로 인증서 확인 </span></p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">$ openssl s_client -showcerts -connect <span class=\"token punctuation\">{</span>ip<span class=\"token punctuation\">}</span>:443 -servername <span class=\"token punctuation\">{</span>domain-name<span class=\"token punctuation\">}</span></code></pre></div>\n<p><span class=\"title__sub2\"> 2. pem 인증서 디코딩 사이트에서 확인 </span>\n<a href=\"https://www.sslcert.co.kr/tools/certificate-crt-decoder\">https://www.sslcert.co.kr/tools/certificate-crt-decoder</a></p>\n<br/>\n<p><span class=\"title__sub1\"> ■ 인증서 교체 </span>  </p>\n<ul>\n<li>인증서는 secret에 넣어 ingress 리소스 파일에 tls secret name을 매핑하는 방식을 사용했다.</li>\n</ul>\n<p><span class=\"title__sub2\"> 1. 인증서 다운로드 및 key 파일 암호화 풀기 </span></p>\n<ul>\n<li>인증서 갱신 또는 재발급 후 인증서/키파일 다운로드</li>\n<li>키파일이 암호화가 걸려있을 경우 복호화</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">$ openssl rsa -in <span class=\"token punctuation\">{</span>key파일<span class=\"token punctuation\">}</span> -out <span class=\"token punctuation\">{</span>output 파일명<span class=\"token punctuation\">}</span>\nEnter pass phrase <span class=\"token keyword\">for</span> <span class=\"token punctuation\">{</span>key파일<span class=\"token punctuation\">}</span> <span class=\"token builtin class-name\">:</span> pass phrase 입력\nwriting RSA key</code></pre></div>\n<br/>\n<p><span class=\"title__sub2\"> 2. secret 생성 </span></p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token comment\"># secret 생성</span>\n$ kb create secret tls <span class=\"token punctuation\">{</span>secret-name<span class=\"token punctuation\">}</span> --key <span class=\"token punctuation\">{</span>key파일<span class=\"token punctuation\">}</span> --cert <span class=\"token punctuation\">{</span>pem파일<span class=\"token punctuation\">}</span> -n <span class=\"token punctuation\">{</span>namespace<span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\"># yaml 파일 생성</span>\n$ kb create secret tls <span class=\"token punctuation\">{</span>secret-name<span class=\"token punctuation\">}</span> --key <span class=\"token punctuation\">{</span>key파일<span class=\"token punctuation\">}</span> --cert <span class=\"token punctuation\">{</span>pem파일<span class=\"token punctuation\">}</span> -n <span class=\"token punctuation\">{</span>namespace<span class=\"token punctuation\">}</span> --dry-run<span class=\"token operator\">=</span>client -o yaml <span class=\"token operator\">></span> secret.yaml</code></pre></div>\n<br/>\n<p><span class=\"title__sub2\"> 3. secret 확인 </span></p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">$ kb get secret -n dev\n\nNAME                       TYPE                                  DATA   AGE\nsecret-name                kubernetes.io/tls                     <span class=\"token number\">2</span>      7d20h</code></pre></div>\n<br/>\n<p><span class=\"title__sub2\"> 4. ingress resource 수정 후 적용 </span></p>\n<p>■ ingress resource에서 secretName 수정 후 적용</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: example-ingress\nspec:\n  tls:\n  - hosts:\n    - example.foo.com\n    secretName: <span class=\"token punctuation\">{</span>secret-name<span class=\"token punctuation\">}</span></code></pre></div>\n<p>■ ingress 적용</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">$ kb apply -f ingress.yaml</code></pre></div>\n<p>■ 인그레스 목록 확인</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">$ kb get ing -n dev\n\nNAME           CLASS    HOSTS                       ADDRESS         PORTS     AGE\ningress-name   <span class=\"token operator\">&lt;</span>none<span class=\"token operator\">></span>   onepass-app.dev.kakaoi.ai   <span class=\"token number\">10.183</span>.xx.xx    <span class=\"token number\">80</span>, <span class=\"token number\">443</span>   7d19h</code></pre></div>\n<p>■ ingress 상세 내용 확인 </p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">$ kb describe ing <span class=\"token punctuation\">{</span>ingress-name<span class=\"token punctuation\">}</span> -n <span class=\"token punctuation\">{</span>namespace<span class=\"token punctuation\">}</span>\n\nName:             ingress-name\nNamespace:        namespace\nAddress:          <span class=\"token number\">10.183</span>.xx.xx\nDefault backend:  default-http-backend:80 <span class=\"token punctuation\">(</span><span class=\"token operator\">&lt;</span>error: endpoints <span class=\"token string\">\"default-http-backend\"</span> not found<span class=\"token operator\">></span><span class=\"token punctuation\">)</span>\nTLS:\n  wild-dev-kakaoi-ai terminates onepass-app.dev.kakaoi.ai\nRules:\n  Host                       Path  Backends\n  ----                       ----  --------\n  onepass-app.dev.kakaoi.ai  \n                             /   fifi-app:80 <span class=\"token punctuation\">(</span><span class=\"token number\">192.168</span>.46.228:8080<span class=\"token punctuation\">)</span>\n  <span class=\"token punctuation\">..</span>.</code></pre></div>\n<br/>\n<h4>참고</h4>\n<p><a href=\"https://github.com/kubernetes/ingress-nginx/blob/main/docs/troubleshooting.md\">ingress troubleshooting</a></p>","fields":{"tagSlugs":["/tags/k-8-s/","/tags/secret/","/tags/ingress/"],"slug":"/works/posts/2022-01-27--001"},"frontmatter":{"title":"[K8S] ingress 인증서 교체","tags":["k8s","secret","ingress"],"date":"2022-01-27","description":""}}},"pageContext":{"slug":"/works/posts/2022-01-27--001"}},"staticQueryHashes":[]}