<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Web on plzhans blog</title><link>https://blog.plzhans.com/categories/web/</link><description>Recent content in Web on plzhans blog</description><generator>Hugo</generator><language>ko-kr</language><lastBuildDate>Thu, 03 Sep 2026 12:52:00 +0000</lastBuildDate><atom:link href="https://blog.plzhans.com/categories/web/index.xml" rel="self" type="application/rss+xml"/><item><title>Hugo 블로그 만들기 - 시작부터 SEO까지</title><link>https://blog.plzhans.com/posts/123-hugo-blog-guide/</link><pubDate>Thu, 03 Sep 2026 00:00:00 +0000</pubDate><guid>https://blog.plzhans.com/posts/123-hugo-blog-guide/</guid><description>&lt;h2 id="개요"&gt;개요&lt;/h2&gt;&#10;&lt;p&gt;이 블로그 자체가 이 순서대로 구축됐다. Notion에서 글을 쓰고 Markdown으로 변환해 Hugo로 빌드하고 GitHub Pages로 배포하는 파이프라인부터, 커스텀 도메인 연결, 다국어 지원, 보안 헤더까지 순서대로 정리했다.&lt;/p&gt;&#10;&lt;h2 id="왜-이-조합인가"&gt;왜 이 조합인가&lt;/h2&gt;&#10;&lt;p&gt;정적 사이트는 서버를 따로 운영할 필요가 없고, GitHub Pages 같은 무료 호스팅에 올리면 그 자체로 빠르고 안정적이다. 문제는 &amp;ldquo;정적&amp;quot;이라는 말대로 글쓰기 경험이 불편해지기 쉽다는 점인데, Notion을 CMS로 쓰면 이 문제가 해결된다 — 평소 쓰던 에디터에서 글을 쓰고, API로 Notion 페이지를 그대로 Markdown으로 끌어와 빌드하면 된다. Hugo는 정적 사이트 생성기 중에서도 빌드 속도가 빠르고 테마 생태계가 갖춰져 있어 선택했다.&lt;/p&gt;</description></item><item><title>SEO 감사가 지적한 보안 헤더 4개, Cloudflare에서 코드 없이 적용하기</title><link>https://blog.plzhans.com/posts/120-cloudflare-security-headers-hsts-csp/</link><pubDate>Sun, 30 Aug 2026 01:25:00 +0000</pubDate><guid>https://blog.plzhans.com/posts/120-cloudflare-security-headers-hsts-csp/</guid><description>&lt;p&gt;&lt;picture&gt;&#10; &lt;source srcset="https://blog.plzhans.com/posts/120-cloudflare-security-headers-hsts-csp/assets/1_bb515481-7252-4c3f-94cb-0474c42c9d1c_hu_b1596e5cf95128e.webp" type="image/webp"&gt;&#10; &lt;img src="https://blog.plzhans.com/posts/120-cloudflare-security-headers-hsts-csp/assets/1_bb515481-7252-4c3f-94cb-0474c42c9d1c_hu_78a6ae4905cadc2c.png" alt="Cloudflare와 HTML meta 태그로 보안 헤더를 나눠 적용하는 구성을 나타낸 대표 이미지" width="1200" height="630" loading="lazy"&gt;&#10; &lt;/picture&gt;&lt;/p&gt;&#10;&lt;h2 id="개요"&gt;개요&lt;/h2&gt;&#10;&lt;p&gt;SEO 감사 리포트에서 보안 헤더 네 개가 지적되는 경우가 있다. &lt;code&gt;Strict-Transport-Security&lt;/code&gt;, &lt;code&gt;Content-Security-Policy&lt;/code&gt;, &lt;code&gt;X-Content-Type-Options&lt;/code&gt;, &lt;code&gt;Referrer-Policy&lt;/code&gt;다.&lt;/p&gt;&#10;&lt;p&gt;처음 보면 이게 왜 SEO 항목인가 싶다. 결론부터 말하면 &lt;strong&gt;이 헤더들이 검색 순위를 직접 올려주지는 않는다.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;이 글에서는 왜 SEO 감사에 보안 헤더가 들어오는지, 각 헤더가 무슨 일을 하는지, 그리고 Cloudflare를 앞단에 둔 정적 블로그에서 &lt;strong&gt;나중에 관리하기 편한 조합&lt;/strong&gt;으로 적용하는 방법을 정리한다.&lt;/p&gt;&#10;&lt;h2 id="왜-seo-리포트가-보안-헤더를-지적하나"&gt;왜 SEO 리포트가 보안 헤더를 지적하나&lt;/h2&gt;&#10;&lt;h3 id="lighthouse-점수에-포함돼-있다"&gt;Lighthouse 점수에 포함돼 있다&lt;/h3&gt;&#10;&lt;p&gt;대부분의 SEO 감사 도구는 Google Lighthouse를 기반으로 기술 SEO 점수를 낸다. Lighthouse의 네 개 카테고리 중 하나가 &lt;strong&gt;Best Practices&lt;/strong&gt;이고 여기에 CSP, HSTS, &lt;code&gt;X-Content-Type-Options&lt;/code&gt; 체크가 들어 있다.&lt;/p&gt;</description></item><item><title>hugo site 다국어 지원하기</title><link>https://blog.plzhans.com/posts/93-hugo-multilingual-seo-setup/</link><pubDate>Wed, 11 Feb 2026 09:55:00 +0000</pubDate><guid>https://blog.plzhans.com/posts/93-hugo-multilingual-seo-setup/</guid><description>&lt;p&gt;&lt;picture&gt;&#10; &lt;source srcset="https://blog.plzhans.com/posts/93-hugo-multilingual-seo-setup/assets/1_30a22a0f-7e83-80a2-b545-f71914bc48d5_hu_96c9b024a1b970b3.webp" type="image/webp"&gt;&#10; &lt;img src="https://blog.plzhans.com/posts/93-hugo-multilingual-seo-setup/assets/1_30a22a0f-7e83-80a2-b545-f71914bc48d5_hu_990513992b9543a8.png" alt="Hugo 블로그에 다국어 지원과 hreflang·canonical 등 SEO 설정을 적용하는 구성을 나타난 대표 이미지" width="1200" height="670" loading="eager" fetchpriority="high"&gt;&#10; &lt;/picture&gt;&lt;/p&gt;&#10;&lt;h2 id="목표"&gt;목표&lt;/h2&gt;&#10;&lt;p&gt;Hugo 블로그에 다국어 지원과 SEO 최적화를 적용하여 검색 엔진 노출을 극대화하고 다국어 사용자에게 적절한 언어 버전을 제공한다.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="seo-설정"&gt;SEO 설정&lt;/h2&gt;&#10;&lt;p&gt;SEO(Search Engine Optimization, 검색 엔진 최적화)는 Google 등 검색 엔진이 사이트의 콘텐츠를 잘 이해하고 검색 결과에 노출시킬 수 있도록 사이트 구조와 메타데이터를 최적화하는 작업이다.&lt;/p&gt;&#10;&lt;p&gt;이 문서는 블로그에 적용된 SEO 설정을 정리한다.&lt;/p&gt;&#10;&lt;h3 id="1-절대-url---hugo-baseurl-설정"&gt;1. 절대 URL - Hugo baseURL 설정&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;파일&lt;/strong&gt;: &lt;code&gt;hugo/hugo.toml&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;내용&lt;/strong&gt;: &lt;code&gt;baseURL = '&lt;/code&gt;&lt;a href="https://blog.plzhans.com/" target="_blank" rel="noopener noreferrer"&gt;&lt;code&gt;https://blog.plzhans.com&lt;/code&gt;&lt;/a&gt;&lt;code&gt;'&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;sitemap.xml, RSS 피드, Open Graph 등에서 올바른 절대 URL이 생성됨&lt;/li&gt;&#10;&lt;li&gt;Sitemap (&lt;code&gt;sitemap.xml&lt;/code&gt;), RSS 피드 (&lt;code&gt;index.xml&lt;/code&gt;)는 Hugo가 자동 생성&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;hugo server&lt;/code&gt; (개발)에서는 자동으로 &lt;a href="http://localhost:1313/" target="_blank" rel="noopener noreferrer"&gt;&lt;code&gt;localhost:1313&lt;/code&gt;&lt;/a&gt;을 사용하므로 별도 처리 불필요&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="2-robotstxt-자동-생성"&gt;2. robots.txt 자동 생성&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;파일&lt;/strong&gt;: &lt;code&gt;hugo/hugo.toml&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;내용&lt;/strong&gt;: &lt;code&gt;enableRobotsTXT = true&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Hugo 빌드 시 &lt;code&gt;robots.txt&lt;/code&gt; 자동 생성 (모든 크롤러 허용 + Sitemap URL 포함)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="3-schemaorg-구조화-데이터-json-ld"&gt;3. &lt;a href="http://schema.org/" target="_blank" rel="noopener noreferrer"&gt;Schema.org&lt;/a&gt; 구조화 데이터 (JSON-LD)&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;파일&lt;/strong&gt;: &lt;code&gt;hugo/layouts/_default/single.html&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;글 페이지(&lt;code&gt;type != &amp;quot;page&amp;quot;&lt;/code&gt;)에 &lt;code&gt;BlogPosting&lt;/code&gt; JSON-LD 삽입&lt;/li&gt;&#10;&lt;li&gt;포함 항목: headline, datePublished, dateModified, author, description, mainEntityOfPage&lt;/li&gt;&#10;&lt;li&gt;Google 검색 결과에서 리치 스니펫(작성자, 날짜 등) 표시 가능&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="4-ogimage-대표-이미지--open-graph"&gt;4. og:image (대표 이미지) / Open Graph&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;파일&lt;/strong&gt;: &lt;code&gt;src/services/NotionExportService.mjs&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Notion 동기화 시 콘텐츠의 첫 번째 이미지를 감지하여 front matter &lt;code&gt;images&lt;/code&gt; 필드에 자동 추가&lt;/li&gt;&#10;&lt;li&gt;Open Graph 메타 태그는 Hugo 내장 템플릿(&lt;code&gt;_internal/opengraph.html&lt;/code&gt;)으로 출력되며, &lt;code&gt;images&lt;/code&gt;를 &lt;code&gt;og:image&lt;/code&gt;로 사용&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="5-meta-description--twitter-card"&gt;5. meta description / Twitter Card&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;파일&lt;/strong&gt;: &lt;code&gt;src/services/NotionExportService.mjs&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Notion의 &amp;ldquo;요약&amp;rdquo; 프로퍼티를 front matter &lt;code&gt;description&lt;/code&gt; 필드로 출력&lt;/li&gt;&#10;&lt;li&gt;Hugo 내장 opengraph/twitter_cards 템플릿 및 baseof.html의 meta description에서 사용&lt;/li&gt;&#10;&lt;li&gt;Twitter Card 메타 태그는 Hugo 내장 템플릿(&lt;code&gt;_internal/twitter_cards.html&lt;/code&gt;)으로 출력&lt;/li&gt;&#10;&lt;li&gt;기타 메타 태그(author, viewport)도 테마에서 기본 제공&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="6-canonical-url"&gt;6. Canonical URL&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;파일&lt;/strong&gt;: &lt;code&gt;hugo/layouts/_default/baseof.html&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;테마(&lt;code&gt;m10c&lt;/code&gt;)의 &lt;code&gt;baseof.html&lt;/code&gt;을 오버라이드하여 &lt;code&gt;&amp;lt;link rel=&amp;quot;canonical&amp;quot;&amp;gt;&lt;/code&gt; 태그 추가&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;.Permalink&lt;/code&gt;을 canonical URL로 사용&lt;/li&gt;&#10;&lt;li&gt;다국어 hreflang 태그도 함께 포함 (번역 페이지 존재 시 &lt;code&gt;alternate&lt;/code&gt; + &lt;code&gt;x-default&lt;/code&gt; 출력)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="7-google-analytics-ga4"&gt;7. Google Analytics (GA4)&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;테마(&lt;code&gt;m10c&lt;/code&gt;)에서 기본 제공&lt;/li&gt;&#10;&lt;li&gt;Google Search Console 인증 시 GA 연동으로 인증 가능&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="다국어-seo-핵심-요소"&gt;다국어 SEO 핵심 요소&lt;/h2&gt;&#10;&lt;h3 id="html-lang-속성"&gt;HTML lang 속성&lt;/h3&gt;&#10;&lt;p&gt;페이지 언어를 명시하여 검색 엔진과 스크린 리더에 언어 정보를 제공한다.&lt;/p&gt;</description></item><item><title>Hugo + Github 블로그 만들기</title><link>https://blog.plzhans.com/posts/94-hugo-github-blog/</link><pubDate>Tue, 10 Feb 2026 08:46:00 +0000</pubDate><guid>https://blog.plzhans.com/posts/94-hugo-github-blog/</guid><description>&lt;p&gt;&lt;picture&gt;&#10; &lt;source srcset="https://blog.plzhans.com/posts/94-hugo-github-blog/assets/1_30a22a0f-7e83-80c6-b1d4-ed75cfa333a7_hu_570dbe114b4ec46d.webp" type="image/webp"&gt;&#10; &lt;img src="https://blog.plzhans.com/posts/94-hugo-github-blog/assets/1_30a22a0f-7e83-80c6-b1d4-ed75cfa333a7_hu_c21d93d0ed9b0132.png" alt="노션 작성 → Markdown 변환 → Hugo 빌드 → GitHub Pages 배포로 이어지는 블로그 구축 흐름을 나타난 대표 이미지" width="1200" height="686" loading="eager" fetchpriority="high"&gt;&#10; &lt;/picture&gt;&lt;/p&gt;&#10;&lt;h2 id="서론"&gt;서론&lt;/h2&gt;&#10;&lt;p&gt;기술 관련 내용을 에버노트와 개인 문서에 정리해오다가 노션의 웹사이트 기능을 활용해 블로그로 운영하려고 준비했었다.&lt;/p&gt;&#10;&lt;p&gt;하지만 노션은 커스터마이징에 제약이 있었고 커스텀 도메인 사용에도 추가 비용이 발생해서 고민을 좀 하게 되었다.&lt;/p&gt;&#10;&lt;p&gt;대안으로 &lt;a href="https://velog.io/" target="_blank" rel="noopener noreferrer"&gt;velog&lt;/a&gt;로 전환할지 Markdown으로 다시 작성해 Jekyll로 옮길지 고민했다.&lt;/p&gt;&#10;&lt;p&gt;하지만 작성이 편한 노션을 포기할 수 없었다. 결론은 노션으로 작성하고 정적 웹사이트로 배포하자!&lt;/p&gt;</description></item><item><title>Github pages 커스텀 도메인 사용하기</title><link>https://blog.plzhans.com/posts/86-github-pages-custom-domain/</link><pubDate>Tue, 10 Feb 2026 07:34:00 +0000</pubDate><guid>https://blog.plzhans.com/posts/86-github-pages-custom-domain/</guid><description>&lt;p&gt;&lt;picture&gt;&#10; &lt;source srcset="https://blog.plzhans.com/posts/86-github-pages-custom-domain/assets/1_30a22a0f-7e83-80e7-8f4c-f143df1f0d00_hu_7553ab9e8c5df41.webp" type="image/webp"&gt;&#10; &lt;img src="https://blog.plzhans.com/posts/86-github-pages-custom-domain/assets/1_30a22a0f-7e83-80e7-8f4c-f143df1f0d00_hu_b1ec2068acbf4167.png" alt="GitHub Pages에 커스텀 도메인을 연결하고 HTTPS를 적용하는 과정을 나타낸 대표 이미지" width="1200" height="670" loading="lazy"&gt;&#10; &lt;/picture&gt;&lt;/p&gt;&#10;&lt;h1 id="개요"&gt;개요&lt;/h1&gt;&#10;&lt;p&gt;GitHub Pages는 기본적으로 &lt;code&gt;https://{계정명}.&lt;/code&gt;&lt;a href="http://github.io/%7B%ec%a0%80%ec%9e%a5%ec%86%8c%eb%aa%85%7D/" target="_blank" rel="noopener noreferrer"&gt;&lt;code&gt;github.io/{저장소명}/&lt;/code&gt;&lt;/a&gt; 형식의 URL을 제공한다.&lt;/p&gt;&#10;&lt;p&gt;이 문서는 커스텀 도메인을 연결하는 방법을 설명한다.&lt;/p&gt;&#10;&lt;h1 id="서브하위-도메인-사용"&gt;서브(하위) 도메인 사용&lt;/h1&gt;&#10;&lt;p&gt;&lt;code&gt;hugosample.plzhans.com&lt;/code&gt;과 같은 서브 도메인을 사용하는 경우다.&lt;/p&gt;&#10;&lt;h2 id="dns-설정"&gt;DNS 설정&lt;/h2&gt;&#10;&lt;p&gt;도메인 DNS 설정에서 CNAME 레코드를 추가한다.&lt;/p&gt;&#10;&lt;p&gt;&lt;picture&gt;&#10; &lt;source srcset="https://blog.plzhans.com/posts/86-github-pages-custom-domain/assets/2_30222a0f-7e83-80d2-8bf8-df6ddbcd2239_hu_933599bf18f4d71c.webp" type="image/webp"&gt;&#10; &lt;img src="https://blog.plzhans.com/posts/86-github-pages-custom-domain/assets/2_30222a0f-7e83-80d2-8bf8-df6ddbcd2239_hu_a0ab5f3b54fca6b7.png" alt="서브도메인을 {계정명}. github.io 로 연결하는 CNAME 레코드 등록 화면" width="1200" height="148" loading="lazy"&gt;&#10; &lt;/picture&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;설정 예시&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Type: CNAME&lt;/li&gt;&#10;&lt;li&gt;Name: 서브도메인 (예: hugosample)&lt;/li&gt;&#10;&lt;li&gt;Value: {계정명}.&lt;a href="http://github.io/" target="_blank" rel="noopener noreferrer"&gt;github.io&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="github-pages-설정"&gt;GitHub Pages 설정&lt;/h2&gt;&#10;&lt;p&gt;Repository → Settings → Pages → Custom domain에서 커스텀 도메인을 입력한다.&lt;/p&gt;</description></item><item><title>HTTPS TLS/SSL 무료 vs 유료 인증서</title><link>https://blog.plzhans.com/posts/39-https-tls-ssl-free-vs-paid-certificates/</link><pubDate>Fri, 06 Feb 2026 06:29:00 +0000</pubDate><guid>https://blog.plzhans.com/posts/39-https-tls-ssl-free-vs-paid-certificates/</guid><description>&lt;p&gt;&lt;picture&gt;&#10; &lt;source srcset="https://blog.plzhans.com/posts/39-https-tls-ssl-free-vs-paid-certificates/assets/1_2fe22a0f-7e83-805c-bf08-d71559e37b4a_hu_a5c51f871774194e.webp" type="image/webp"&gt;&#10; &lt;img src="https://blog.plzhans.com/posts/39-https-tls-ssl-free-vs-paid-certificates/assets/1_2fe22a0f-7e83-805c-bf08-d71559e37b4a_hu_a2d8511883e5b90d.png" alt="HTTPS에 필요한 TLS/SSL 인증서의 무료·유료·클라우드 관리형 옵션을 비교하는 내용을 나타난 대표 이미지" width="1024" height="367" loading="eager" fetchpriority="high"&gt;&#10; &lt;/picture&gt;&lt;/p&gt;&#10;&lt;h2 id="개요"&gt;개요&lt;/h2&gt;&#10;&lt;p&gt;HTTPS 통신을 위해 TLS/SSL 인증서와 도메인이 필요하다.&lt;/p&gt;&#10;&lt;p&gt;소유한 도메인에 대해 발급되며 클라이언트는 접속한 도메인과 인증서의 도메인이 일치하는지 검증한다.&lt;/p&gt;&#10;&lt;p&gt;이 문서는 실무 관점에서 도메인별 인증서 발급 방법을 정리한다.&lt;/p&gt;&#10;&lt;p&gt;이론보다는 실무적 선택과 구현에 초점을 둔다.&lt;/p&gt;&#10;&lt;h2 id="ssl-인증서-발급-및-검증-흐름"&gt;SSL 인증서 발급 및 검증 흐름&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;핵심 포인트&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;CA 기관의 역할&lt;/strong&gt;: 서버의 공개키를 검증하고 서명하여 신뢰성 보장&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;발급업체의 역할&lt;/strong&gt;: 서버와 CA 기관 사이에서 인증서 발급 절차를 중개&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;OS의 역할&lt;/strong&gt;: CA 루트 인증서를 사전 내장하여 클라이언트가 서버 인증서 검증에 사용&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;클라이언트의 역할&lt;/strong&gt;: OS에 내장된 CA 루트 인증서로 서버 인증서의 서명을 검증하고 신뢰성 확인&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="mermaid"&gt;sequenceDiagram&#10; participant 서버&#10; participant 발급업체&#10; participant CA기관&#10; participant OS&#10; participant 클라이언트&#10;&#10; %% 인증서 발급 단계&#10; Note over 서버,CA기관: 1. 인증서 발급 단계&#10; 서버-&gt;&gt;서버: 개인키/공개키 쌍 생성&#10; 서버-&gt;&gt;발급업체: 인증서 구매 요청&lt;br/&gt;(공개키 + 도메인 정보)&#10; 발급업체-&gt;&gt;CA기관: CSR(인증서 서명 요청) 전달&#10; CA기관-&gt;&gt;CA기관: 도메인 소유권 검증&lt;br/&gt;(DNS/HTTP/Email 방식)&#10; CA기관-&gt;&gt;CA기관: CA 개인키로 서버 공개키 서명&#10; CA기관-&gt;&gt;발급업체: 서명된 SSL 인증서 발급&lt;br/&gt;(공개키 + CA 서명 + 도메인 정보)&#10; 발급업체-&gt;&gt;서버: 인증서 전달&#10; 서버-&gt;&gt;서버: 인증서와 개인키를 서버에 설치&#10; CA기관-&gt;&gt;OS: CA 루트 인증서 사전 등록&lt;br/&gt;(브라우저/OS 배포 시 내장)&#10;&#10; %% HTTPS 연결 단계&#10; Note over 서버,클라이언트: 2. HTTPS 연결 단계&#10; 클라이언트-&gt;&gt;서버: HTTPS 사이트 접속 요청&lt;br/&gt;(Client Hello)&#10; 서버-&gt;&gt;클라이언트: SSL 인증서 전송&lt;br/&gt;(Server Hello)&#10; 클라이언트-&gt;&gt;OS: CA 루트 인증서 조회&lt;br/&gt;(인증서 검증용)&#10; OS-&gt;&gt;클라이언트: CA 루트 인증서 반환&#10; 클라이언트-&gt;&gt;클라이언트: 인증서 유효성 검증&lt;br/&gt;1) CA 루트 인증서로 서명 확인&lt;br/&gt;2) 도메인 일치 여부 확인&lt;br/&gt;3) 유효기간 확인&#10; &#10; alt 인증서 검증 성공&#10; 클라이언트-&gt;&gt;클라이언트: 안전한 HTTPS 연결 표시 (🔒)&#10; Note over 서버,클라이언트: 이후 암호화된 통신 시작&#10; else 인증서 검증 실패&#10; 클라이언트-&gt;&gt;클라이언트: 보안 경고 표시&lt;br/&gt;(신뢰할 수 없는 인증서)&#10; end&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="tlsssl-인증서란"&gt;TLS/SSL 인증서란&lt;/h2&gt;&#10;&lt;p&gt;웹에서 HTTP를 HTTPS로 전환하기 위해 필요한 디지털 인증서다. 서버에서 개인키를 생성하고&lt;/p&gt;</description></item></channel></rss>