タイトル: SSL化
この本文には実行可能なタグ等が含まれるため、安全のためHTMLソースとして表示しています。本文データは変更していません。
<p>Googleの検索エンジンでは<span style="color:#e74c3c"><strong>SSL</strong></span>通信を行っているWebサイトは検索エンジンで優遇されると公式にアナウンスしています。</p>
<p>レンタルサーバーの無料枠でSSL設定が可能である場合は必ず設定をしましょう。HTTPS化はSEOだけでなく、ユーザーへの信頼性・セキュリティの面でも今や必須です。</p>
<h2>SSL(HTTPS)化の主なメリット</h2>
<ul>
<li><strong>SEOで有利</strong> — Googleは2014年からHTTPSをランキングシグナルに採用</li>
<li><strong>セキュリティ</strong> — 通信内容の暗号化、改ざん検知、サーバー認証</li>
<li><strong>ブラウザの警告回避</strong> — Chrome等は非HTTPSサイトに「保護されていない通信」警告を表示</li>
<li><strong>HTTP/2 / HTTP/3 対応</strong> — これらの新プロトコルは事実上HTTPSが前提</li>
<li><strong>ユーザー信頼度</strong> — アドレスバーに鍵マークが付き、安心感がある</li>
</ul>
<h2>SSL化に必要なもの</h2>
<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
<thead>
<tr><th>項目</th><th>内容</th></tr>
</thead>
<tbody>
<tr><td><strong>SSL証明書</strong></td><td>認証局(CA)が発行する電子証明書</td></tr>
<tr><td><strong>秘密鍵</strong></td><td>サーバー側で生成(外部に出さない)</td></tr>
<tr><td><strong>Webサーバー側の設定</strong></td><td>Apache / Nginx / IIS 等</td></tr>
<tr><td><strong>ポート開放</strong></td><td>443番(HTTPS)</td></tr>
</tbody>
</table>
<h2>主な証明書の入手方法</h2>
<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
<thead>
<tr><th>方法</th><th>特徴</th><th>料金</th></tr>
</thead>
<tbody>
<tr><td><strong>Let's Encrypt</strong></td><td>自動更新可(certbot)、最も普及</td><td>無料</td></tr>
<tr><td><strong>レンタルサーバーの無料SSL</strong></td><td>さくら、エックスサーバー、ロリポップ等が標準提供</td><td>無料</td></tr>
<tr><td><strong>有料SSL(DV)</strong></td><td>ドメイン認証。年数千円〜</td><td>有料</td></tr>
<tr><td><strong>有料SSL(OV/EV)</strong></td><td>組織認証・厳格認証。年数万円〜</td><td>有料</td></tr>
<tr><td><strong>Cloudflare Universal SSL</strong></td><td>CDN経由のSSL終端</td><td>無料枠あり</td></tr>
</tbody>
</table>
<h2>Let's Encrypt(certbot)導入の最短手順</h2>
<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
<tbody>
<tr>
<td style="background-color:#000000">
<p><span style="color:#ffffff"># Ubuntu / Debian<br />
$ sudo apt install certbot python3-certbot-nginx<br />
$ sudo certbot --nginx -d example.com -d www.example.com<br />
<br />
# 自動更新(既定でcrontab登録)<br />
$ sudo certbot renew --dry-run</span></p>
</td>
</tr>
</tbody>
</table>
<h2>SSL化後にやるべき設定</h2>
<h3>1. HTTP → HTTPSの自動リダイレクト</h3>
<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
<tbody>
<tr>
<td style="background-color:#000000">
<p><span style="color:#ffffff"># nginx の例<br />
server {<br />
listen 80;<br />
server_name example.com;<br />
return 301 https://$host$request_uri;<br />
}</span></p>
</td>
</tr>
</tbody>
</table>
<h3>2. HSTSの設定</h3>
<p>ブラウザに「次回以降は最初からHTTPSで来てね」と指示するヘッダ。</p>
<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
<tbody>
<tr>
<td style="background-color:#000000">
<p><span style="color:#ffffff">add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;</span></p>
</td>
</tr>
</tbody>
</table>
<h3>3. 内部リンクをすべてHTTPSに</h3>
<ul>
<li>HTMLの相対URLを使う、または絶対URLは <code>https://</code> に</li>
<li>画像・CSS・JSなどの外部リソースも <code>https://</code></li>
<li>混在コンテンツ(mixed content)は警告/ブロック対象</li>
</ul>
<h3>4. canonicalタグもhttpsに</h3>
<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
<tbody>
<tr>
<td style="background-color:#000000">
<p><span style="color:#ffffff"><link rel="canonical" href="https://example.com/page" /></span></p>
</td>
</tr>
</tbody>
</table>
<h3>5. Google Search Consoleで再登録</h3>
<p>http版とhttps版は別プロパティ扱いになるため、HTTPS版を新規追加してサイトマップも再送信します。</p>
<h2>動作確認のチェック</h2>
<ul>
<li>ブラウザでアクセスして<strong>鍵マーク</strong>が出るか</li>
<li><a href="https://www.ssllabs.com/ssltest/">SSL Labs SSL Test</a>でA以上のスコアか</li>
<li>HTTPでアクセスしたときに自動でHTTPSにリダイレクトされるか</li>
<li>混在コンテンツが無いか(Chrome DevTools の Console警告)</li>
<li><a href="https://search.google.com/search-console">Google Search Console</a>でインデックス状況確認</li>
</ul>
<h2>注意点</h2>
<ul>
<li><strong>証明書の期限切れ</strong>に注意。Let's Encryptは90日なので自動更新は必須</li>
<li><strong>301リダイレクト</strong>でSEO評価を引き継ぐ。302(一時)ではない</li>
<li><strong>古いTLSバージョン無効化</strong>: TLS 1.0/1.1 は無効、TLS 1.2/1.3 のみ有効化</li>
<li><strong>Cookieのsecure属性</strong>: HTTPS必須にする</li>
</ul>
<h2>関連</h2>
<ul>
<li>親カテゴリ: <a href="/article/20007">SEO</a></li>
<li>関連: <a href="/article/10480">HTTP</a></li>
<li>関連エラー: <a href="/article/20501">curl SSL certificate subject name mismatch</a></li>
</ul>