<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SSL/TLS - 総合デジタルマーケティング企業 エスライン・テクノロジーズ</title>
	<atom:link href="https://slt-inc.jp/tag/ssl-tls/feed/" rel="self" type="application/rss+xml" />
	<link>https://slt-inc.jp</link>
	<description>Go Beyond with SLT - インターネット集客で事業者と顧客を繋ぐ</description>
	<lastBuildDate>Mon, 12 Oct 2026 08:03:45 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://slt-inc.jp/wp-content/uploads/2025/03/cropped-エスライン_テクノロジーズ_-_新ロゴ2025-removebg-32x32.png</url>
	<title>SSL/TLS - 総合デジタルマーケティング企業 エスライン・テクノロジーズ</title>
	<link>https://slt-inc.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>SSL/TLS証明書のチェック方法&#124;有効期限・チェーン・通信方式の確認手順</title>
		<link>https://slt-inc.jp/article/ssl-tls-certificate-check/</link>
		
		<dc:creator><![CDATA[slt]]></dc:creator>
		<pubDate>Thu, 24 Sep 2026 05:08:00 +0000</pubDate>
				<category><![CDATA[セキュリティ]]></category>
		<category><![CDATA[記事]]></category>
		<category><![CDATA[CSP]]></category>
		<category><![CDATA[HSTS]]></category>
		<category><![CDATA[HTTPS]]></category>
		<category><![CDATA[SSL/TLS]]></category>
		<category><![CDATA[Webサイトセキュリティ]]></category>
		<category><![CDATA[セキュリティチェック]]></category>
		<category><![CDATA[セキュリティ対策]]></category>
		<guid isPermaLink="false">https://slt-inc.jp/security/ssl-tls-certificate-check/</guid>

					<description><![CDATA[<p><a class="glossaryLink"  aria-describedby="tt"  data-cmtooltip="&#60;div class=glossaryItemBody&#62;SSL/TLS&#35388;&#26126;&#26360;&#12392;&#12399;SSL/TLS&#35388;&#26126;&#26360;&#12399;&#12289;&#12469;&#12452;&#12488;&#12364;&#12289;&#12381;&#12398;&#12489;&#12513;&#12452;&#12531;&#12398;&#27491;&#24403;&#12394;&#25345;&#12385;&#20027;&#12398;&#12418;&#12398;&#12391;&#12354;&#12427;&#12371;&#12392;&#12434;&#12502;&#12521;&#12454;&#12470;&#12395;&#35388;&#26126;&#12375;&#12289;&#36890;&#20449;&#12398;&#26263;&#21495;&#21270;&#12395;&#20351;&#12358;&#37749;&#12434;&#28193;&#12377;&#12383;&#12417;&#12398;&#12487;&#12472;&#12479;&#12523;&#35388;&#26126;&#26360;&#12391;&#12377;&#12290;&#35469;&#35388;&#23616;(CA)&#12364;&#30330;&#34892;&#12375;&#12414;&#12377;&#12290;&#12300;SSL&#35388;&#26126;&#26360;&#12301;&#12399;&#36890;&#31216;&#12391;&#12289;&#29694;&#22312;&#20351;&#12431;&#12428;&#12390;&#12356;&#12427;&#26263;&#21495;&#21270;&#12398;&#20181;&#32068;&#12415;&#12399;TLS&#12391;&#12377;&#12290;&#38;lt;br/&#38;gt;SSL/TLS&#35388;&#26126;&#26360;&#12364;&#24517;&#35201;&#12394;&#29702;&#30001;&#35388;&#26126;&#26360;&#12364;&#12394;&#12356;&#12289;&#12414;&#12383;&#12399;&#26399;&#38480;&#12364;&#20999;&#12428;&#12390;&#12356;&#12427;&#12392;&#12289;&#12502;&#12521;&#12454;&#12470;&#12399;&#12300;&#25509;&#32154;&#12364;&#12503;&#12521;&#12452;&#12505;&#12540;&#12488;&#12391;&#12399;&#12354;&#12426;&#12414;&#12379;&#12435;&#12301;&#12392;&#12356;&#12387;&#12383;&#20840;&#30011;&#38754;&#12398;&#35686;&#21578;&#12434;&#20986;&#12375;&#12289;&#22810;&#12367;&#12398;&#35370;&#21839;&#32773;&#12399;&#12381;&#12371;&#12391;&#38626;&#12428;&#12414;&#12377;&#12290;&#12501;&#12457;&#12540;&#12512;&#12420;&#12525;&#12464;&#12452;&#12531;&#12398;&#20837;&#21147;&#20869;&#23481;&#12418;&#12289;&#26263;&#21495;&#21270;&#12373;&#12428;&#12378;&#12395;&#36865;&#12425;&#12428;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt;&#35388;&#26126;&#26360;&#12398;&#12488;&#12521;&#12502;&#12523;&#12391;&#12418;&#12387;&#12392;&#12418;&#22810;&#12356;&#12398;&#12399;&#12289;&#26356;&#26032;&#12398;&#22833;&#24565;&#12395;&#12424;&#12427;&#26399;&#38480;&#20999;&#12428;&#12391;&#12377;&#12290;&#26399;&#38480;&#20999;&#12428;&#12391;&#12399;&#12289;&#12469;&#12452;&#12488;&#12384;&#12369;&#12391;&#12394;&#12367;&#12289;&#21516;&#12376;&#35388;&#26126;&#26360;&#12434;&#20351;&#12358;API&#12420;&#12513;&#12540;&#12523;&#37197;&#20449;&#12394;&#12393;&#12398;&#36890;&#20449;&#12364;&#27490;&#12414;&#12427;&#12371;&#12392;&#12364;&#12354;&#12426;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt;SSL/TLS&#35388;&#26126;&#26360;&#12398;&#20181;&#32068;&#12415;&#35388;&#26126;&#26360;&#12395;&#12399;&#12289;&#23550;&#35937;&#12398;&#12489;&#12513;&#12452;&#12531;&#21517;(SAN)&#12289;&#30330;&#34892;&#32773;&#12289;&#26377;&#21177;&#26399;&#38291;&#12289;&#20844;&#38283;&#37749;&#12289;CA&#12398;&#32626;&#21517;&#12364;&#20837;&#12387;&#12390;&#12356;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt;&#12502;&#12521;&#12454;&#12470;&#12399;&#12289;&#12469;&#12540;&#12496;&#12540;&#35388;&#26126;&#26360;&#12289;&#20013;&#38291;&#35388;&#26126;&#26360;&#12289;&#12502;&#12521;&#12454;&#12470;&#12395;&#20869;&#34101;&#12373;&#12428;&#12383;&#12523;&#12540;&#12488;&#35388;&#26126;&#26360;&#12398;&#38918;&#12395;&#12289;&#32626;&#21517;&#12398;&#12388;&#12394;&#12364;&#12426;&#12434;&#26908;&#35388;&#12375;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt;&#26908;&#35388;&#12398;&#31278;&#39006;&#12399;&#12289;&#12489;&#12513;&#12452;&#12531;&#12398;&#31649;&#29702;&#27177;&#38480;&#12384;&#12369;&#12434;&#30906;&#35469;&#12377;&#12427;DV&#12289;&#32068;&#32340;&#12398;&#23455;&#22312;&#12418;&#30906;&#35469;&#12377;&#12427;OV&#12289;EV&#12398;3&#12388;&#12391;&#12377;&#12290;&#26263;&#21495;&#21270;&#12398;&#24375;&#24230;&#12399;&#12289;&#12393;&#12428;&#12418;&#22793;&#12431;&#12426;&#12414;&#12379;&#12435;&#12290;&#38;lt;br/&#38;gt;&#38;lt;br/&#38;gt;&#20844;&#30340;&#12395;&#20449;&#38972;&#12373;&#12428;&#12427;&#35388;&#26126;&#26360;&#12398;&#26368;&#38263;&#26377;&#21177;&#26399;&#38291;&#12399;&#12289;CA/Browser Forum&#12398;&#27770;&#23450;&#12395;&#12424;&#12426;&#12289;2026&#24180;3&#26376;&#12363;&#12425;2029&#24180;3&#26376;&#12395;&#12363;&#12369;&#12390;&#12289;398&#26085;&#12363;&#12425;47&#26085;&#12408;&#27573;&#38542;&#30340;&#12395;&#30701;&#12367;&#12394;&#12426;&#12414;&#12377;&#12290;&#25163;&#20316;&#26989;&#12398;&#26356;&#26032;&#12391;&#12399;&#36939;&#29992;&#12364;&#22238;&#12425;&#12394;&#12367;&#12394;&#12427;&#12383;&#12417;&#12289;&#33258;&#21205;&#26356;&#26032;&#12364;&#21069;&#25552;&#12395;&#12394;&#12426;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt;SSL/TLS&#35388;&#26126;&#26360;&#12398;&#30906;&#35469;&#26041;&#27861;&#12502;&#12521;&#12454;&#12470;&#12398;&#12450;&#12489;&#12524;&#12473;&#12496;&#12540;&#12398;&#37749;&#12398;&#12450;&#12452;&#12467;&#12531;&#12363;&#12425;&#12289;&#35388;&#26126;&#26360;&#12398;&#30330;&#34892;&#32773;&#12392;&#26377;&#21177;&#26399;&#38480;&#12434;&#30906;&#35469;&#12391;&#12365;&#12414;&#12377;&#12290;&#12467;&#12510;&#12531;&#12489;&#12391;&#12399;&#27425;&#12398;&#12392;&#12362;&#12426;&#12391;&#12377;&#12290;&#38;lt;br/&#38;gt; &#38;lt;code&#38;gt;echo &#124; openssl s_client -connect example.com:443 -servername example.com 2&#38;gt;/dev/null &#124; openssl x509 -noout -subject -issuer -dates -ext subjectAltName&#38;lt;/code&#38;gt; 30&#26085;&#20197;&#20869;&#12395;&#20999;&#12428;&#12427;&#12363;&#12393;&#12358;&#12363;&#12399;&#12289;&#27425;&#12398;&#12467;&#12510;&#12531;&#12489;&#12391;&#21028;&#23450;&#12391;&#12365;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt; &#38;lt;code&#38;gt;echo &#124; openssl s_client -connect example.com:443 -servername example.com 2&#38;gt;/dev/null &#124; openssl x509 -noout -checkend 2592000&#38;lt;/code&#38;gt; &#12300;Certificate will not expire&#12301;&#12392;&#20986;&#12428;&#12400;&#12289;30&#26085;&#20197;&#19978;&#12398;&#20313;&#35029;&#12364;&#12354;&#12426;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt;SSL/TLS&#35388;&#26126;&#26360;&#12398;&#35373;&#23450;&#20363;&#28961;&#26009;&#12391;&#33258;&#21205;&#26356;&#26032;&#12391;&#12365;&#12427;Let&#38;#039;s Encrypt&#12434;&#12289;certbot&#12391;&#23566;&#20837;&#12377;&#12427;&#20363;&#12391;&#12377;&#12290;&#38;lt;br/&#38;gt; &#38;lt;code&#38;gt;sudo certbot --nginx -d example.com -d www.example.comsudo certbot renew --dry-run&#38;lt;/code&#38;gt; Apache&#12398;&#22580;&#21512;&#12399;&#12289;&#38;lt;code&#38;gt;--nginx&#38;lt;/code&#38;gt; &#12434; &#38;lt;code&#38;gt;--apache&#38;lt;/code&#38;gt; &#12395;&#26367;&#12360;&#12414;&#12377;&#12290;2&#34892;&#30446;&#12399;&#12289;&#33258;&#21205;&#26356;&#26032;&#12364;&#21205;&#12367;&#12363;&#12398;&#35430;&#39443;&#12391;&#12377;&#12290;&#35388;&#26126;&#26360;&#12501;&#12449;&#12452;&#12523;&#12434;&#33258;&#20998;&#12391;&#25351;&#23450;&#12377;&#12427;&#22580;&#21512;&#12399;&#12289;&#20013;&#38291;&#35388;&#26126;&#26360;&#12434;&#21547;&#12416; &#38;lt;code&#38;gt;fullchain.pem&#38;lt;/code&#38;gt; &#12434;&#20351;&#12356;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt;nginx&#12398;&#20363;&#12391;&#12377;&#12290;&#38;lt;br/&#38;gt; &#38;lt;code&#38;gt;ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;&#38;lt;/code&#38;gt; Apache&#12398;&#20363;&#12391;&#12377;&#12290;&#38;lt;br/&#38;gt; &#38;lt;code&#38;gt;SSLCertificateFile    /etc/letsencrypt/live/example.com/fullchain.pemSSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem&#38;lt;/code&#38;gt; WordPress&#12391;&#12399;&#12289;&#35388;&#26126;&#26360;&#33258;&#20307;&#12399;&#12469;&#12540;&#12496;&#12540;&#20596;&#12391;&#35373;&#23450;&#12375;&#12414;&#12377;&#12290;&#31649;&#29702;&#30011;&#38754;&#12398;&#12300;&#35373;&#23450;&#12301;&#12300;&#19968;&#33324;&#12301;&#12391;&#12289;&#12469;&#12452;&#12488;&#12450;&#12489;&#12524;&#12473;&#12434; &#38;lt;code&#38;gt;https://&#38;lt;/code&#38;gt; &#12395;&#22793;&#26356;&#12375;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt;&#12424;&#12367;&#12354;&#12427;&#38291;&#36949;&#12356;&#12392;&#27880;&#24847;&#28857;&#38;lt;code&#38;gt;www&#38;lt;/code&#38;gt; &#12354;&#12426;&#12392;&#28961;&#12375;&#12398;&#29255;&#26041;&#12384;&#12369;&#12364;&#23550;&#35937;&#12395;&#12394;&#12387;&#12390;&#12356;&#12427;&#12392;&#12289;&#12418;&#12358;&#19968;&#26041;&#12391;&#12456;&#12521;&#12540;&#12395;&#12394;&#12426;&#12414;&#12377;&#12290;&#12527;&#12452;&#12523;&#12489;&#12459;&#12540;&#12489;&#35388;&#26126;&#26360;(&#38;lt;code&#38;gt;*.example.com&#38;lt;/code&#38;gt;)&#12399;&#12289;&#38;lt;code&#38;gt;example.com&#38;lt;/code&#38;gt; &#33258;&#20307;&#12420;&#12289;&#38;lt;code&#38;gt;a.b.example.com&#38;lt;/code&#38;gt; &#12398;&#12424;&#12358;&#12394;2&#38542;&#23652;&#30446;&#12395;&#12399;&#20351;&#12360;&#12414;&#12379;&#12435;&#12290;&#38;lt;br/&#38;gt;&#20013;&#38291;&#35388;&#26126;&#26360;&#12434;&#20837;&#12428;&#24536;&#12428;&#12427;&#12392;&#12289;&#19968;&#37096;&#12398;&#31471;&#26411;&#12420;&#12450;&#12503;&#12522;&#12384;&#12369;&#12391;&#12456;&#12521;&#12540;&#12395;&#12394;&#12426;&#12289;&#25163;&#20803;&#12398;&#12502;&#12521;&#12454;&#12470;&#12391;&#12399;&#27671;&#12389;&#12369;&#12414;&#12379;&#12435;&#12290;&#38;lt;br/&#38;gt;&#33258;&#21205;&#26356;&#26032;&#12434;&#35373;&#23450;&#12375;&#12390;&#12418;&#12289;&#26356;&#26032;&#12398;&#22833;&#25943;&#12395;&#12399;&#27671;&#12389;&#12369;&#12414;&#12379;&#12435;&#12290;&#26377;&#21177;&#26399;&#38480;&#12398;&#30435;&#35222;&#12434;&#21029;&#12395;&#29992;&#24847;&#12375;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt;&#26356;&#26032;&#12398;&#36890;&#30693;&#12513;&#12540;&#12523;&#12398;&#23451;&#20808;&#12364;&#12289;&#36864;&#32887;&#12375;&#12383;&#25285;&#24403;&#32773;&#12398;&#12414;&#12414;&#12395;&#12394;&#12387;&#12390;&#12356;&#12394;&#12356;&#12363;&#12434;&#30906;&#35469;&#12375;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt;&#31192;&#23494;&#37749;&#12434;&#28431;&#12425;&#12375;&#12383;&#21487;&#33021;&#24615;&#12364;&#12354;&#12427;&#22580;&#21512;&#12399;&#12289;&#35388;&#26126;&#26360;&#12398;&#22833;&#21177;&#12392;&#20877;&#30330;&#34892;&#12364;&#24517;&#35201;&#12391;&#12377;&#12290;&#38;lt;br/&#38;gt;&#38;lt;br/&#38;gt;Web&#12469;&#12452;&#12488; &#12475;&#12461;&#12517;&#12522;&#12486;&#12451;&#12481;&#12455;&#12483;&#12459;&#12540;&#12391;&#30906;&#35469;&#12377;&#12427;Web&#12469;&#12452;&#12488; &#12475;&#12461;&#12517;&#12522;&#12486;&#12451;&#12481;&#12455;&#12483;&#12459;&#12540;&#12399;&#12289;&#35388;&#26126;&#26360;&#12398;&#26377;&#21177;&#26399;&#38480;&#12289;&#12489;&#12513;&#12452;&#12531;&#21517;&#12392;&#12398;&#19968;&#33268;&#12289;&#33258;&#24049;&#32626;&#21517;&#12420;&#20013;&#38291;&#35388;&#26126;&#26360;&#12398;&#19981;&#36275;&#12289;&#37749;&#12398;&#24375;&#24230;&#12394;&#12393;&#12434;&#35386;&#26029;&#12375;&#12414;&#12377;&#12290;&#26399;&#38480;&#12364;&#36817;&#12356;&#22580;&#21512;&#12399;&#12289;&#27531;&#12426;&#26085;&#25968;&#12418;&#31034;&#12375;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt;&#38306;&#36899;&#29992;&#35486;TLS&#38;lt;br/&#38;gt;HSTS&#38;lt;br/&#38;gt;&#28151;&#22312;&#12467;&#12531;&#12486;&#12531;&#12484;&#38;lt;br/&#38;gt;&#12475;&#12461;&#12517;&#12522;&#12486;&#12451;&#12504;&#12483;&#12480;&#12540;&#38;lt;br/&#38;gt;&#38;lt;br/&#38;gt;&#12469;&#12452;&#12488;&#12398;&#35373;&#23450;&#12434;&#28961;&#26009;&#12391;&#30906;&#35469;&#12377;&#12427;&#12469;&#12452;&#12488;&#12398;URL&#12434;&#20837;&#21147;&#12377;&#12427;&#12384;&#12369;&#12391;&#12289;SSL/TLS&#35388;&#26126;&#26360; &#12394;&#12393;&#12398;&#35373;&#23450;&#29366;&#27841;&#12434;&#35386;&#26029;&#12391;&#12365;&#12414;&#12377;&#12290;Web&#12469;&#12452;&#12488; &#12475;&#12461;&#12517;&#12522;&#12486;&#12451;&#12481;&#12455;&#12483;&#12459;&#12540;&#12300;Security Checker X&#12301;&#12399;&#12289;&#30331;&#37682;&#12394;&#12375;&#12391;&#20351;&#12360;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt;&#60;/div&#62;"  href="https://slt-inc.jp/glossary/ssl-tls-certificate/"  data-gt-translate-attributes='[{"attribute":"data-cmtooltip", "format":"html"}]'  tabindex='0' role='link'>SSL/TLS&#35388;&#26126;&#26360;</a>&#12398;&#26377;&#21177;&#26399;&#38480;&#12289;&#12507;&#12473;&#12488;&#21517;(SAN)&#12289;&#20013;&#38291;&#35388;&#26126;&#26360;&#12398;&#12481;&#12455;&#12540;&#12531;&#12289;<a class="glossaryLink"  aria-describedby="tt"  data-cmtooltip="&#60;div class=glossaryItemBody&#62;TLS&#12392;&#12399;TLS(Transport Layer Security)&#12399;&#12289;&#12452;&#12531;&#12479;&#12540;&#12493;&#12483;&#12488;&#12398;&#36890;&#20449;&#12434;&#26263;&#21495;&#21270;&#12375;&#12289;&#30423;&#32884;&#12289;&#25913;&#12374;&#12435;&#12289;&#12394;&#12426;&#12377;&#12414;&#12375;&#12363;&#12425;&#23432;&#12427;&#36890;&#20449;&#12503;&#12525;&#12488;&#12467;&#12523;&#12391;&#12377;&#12290;SSL&#12398;&#24460;&#32153;&#12395;&#12354;&#12383;&#12426;&#12414;&#12377;&#12290;URL&#12364; &#38;lt;code&#38;gt;https://&#38;lt;/code&#38;gt; &#12391;&#22987;&#12414;&#12427;&#12398;&#12399;&#12289;HTTP&#12398;&#36890;&#20449;&#12434;TLS&#12398;&#19978;&#12391;&#34892;&#12387;&#12390;&#12356;&#12427;&#12392;&#12356;&#12358;&#24847;&#21619;&#12391;&#12377;&#12290;&#38;lt;br/&#38;gt;TLS&#12398;&#35373;&#23450;&#12364;&#24517;&#35201;&#12394;&#29702;&#30001;TLS&#12395;&#12399;&#29256;&#12364;&#12354;&#12426;&#12289;&#21476;&#12356;&#29256;&#12399;&#25915;&#25731;&#25163;&#27861;&#12364;&#30693;&#12425;&#12428;&#12390;&#12356;&#12414;&#12377;&#12290;&#12469;&#12540;&#12496;&#12540;&#12364;&#21476;&#12356;&#29256;&#12434;&#21463;&#12369;&#20184;&#12369;&#12383;&#12414;&#12414;&#12384;&#12392;&#12289;&#36890;&#20449;&#30456;&#25163;&#12395;&#12424;&#12387;&#12390;&#12399;&#12289;&#24369;&#12356;&#26041;&#24335;&#12391;&#26263;&#21495;&#21270;&#12373;&#12428;&#12414;&#12377;&#12290;SSL 3.0&#12395;&#12399;&#12289;&#36890;&#20449;&#20869;&#23481;&#12398;&#19968;&#37096;&#12364;&#21462;&#12426;&#20986;&#12373;&#12428;&#12427;&#12300;POODLE&#12301;&#12392;&#21628;&#12400;&#12428;&#12427;&#25915;&#25731;&#12364;2014&#24180;&#12395;&#20844;&#34920;&#12373;&#12428;&#12414;&#12375;&#12383;&#12290;&#38;lt;br/&#38;gt;&#12463;&#12524;&#12472;&#12483;&#12488;&#12459;&#12540;&#12489;&#24773;&#22577;&#12434;&#25201;&#12358;&#12469;&#12452;&#12488;&#12391;&#12399;&#12289;&#26989;&#30028;&#22522;&#28310;&#12398;PCI DSS&#12418;&#12289;&#21476;&#12356;&#29256;&#12398;&#28961;&#21177;&#21270;&#12434;&#27714;&#12417;&#12390;&#12356;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt;TLS&#12398;&#20181;&#32068;&#12415;&#38;lt;ol&#38;gt;&#12502;&#12521;&#12454;&#12470;&#12364;&#12289;&#23550;&#24540;&#12377;&#12427;TLS&#12398;&#29256;&#12392;&#26263;&#21495;&#12473;&#12452;&#12540;&#12488;&#12398;&#19968;&#35239;&#12434;&#12469;&#12540;&#12496;&#12540;&#12395;&#36865;&#12427;&#12290;&#38;lt;br/&#38;gt;&#12469;&#12540;&#12496;&#12540;&#12364;&#12289;&#20351;&#12358;&#29256;&#12392;&#26263;&#21495;&#12473;&#12452;&#12540;&#12488;&#12434;&#36984;&#12403;&#12289;&#35388;&#26126;&#26360;&#12434;&#36865;&#12427;&#12290;&#38;lt;br/&#38;gt;&#21452;&#26041;&#12364;&#37749;&#20132;&#25563;&#12391;&#12289;&#12381;&#12398;&#36890;&#20449;&#12384;&#12369;&#12398;&#20849;&#36890;&#37749;&#12434;&#20316;&#12427;&#12290;&#38;lt;br/&#38;gt;&#20197;&#38477;&#12398;&#36890;&#20449;&#12399;&#12289;&#20849;&#36890;&#37749;&#12391;&#26263;&#21495;&#21270;&#12373;&#12428;&#12427;&#12290;&#38;lt;br/&#38;gt;&#38;lt;/ol&#38;gt;&#38;lt;table&#38;gt;&#38;lt;thead&#38;gt;&#38;lt;tr&#38;gt;&#38;lt;th&#38;gt;&#29256;&#38;lt;/th&#38;gt;&#38;lt;th&#38;gt;&#29366;&#27841;&#38;lt;/th&#38;gt;&#38;lt;/tr&#38;gt;&#38;lt;/thead&#38;gt;&#38;lt;tbody&#38;gt;&#38;lt;tr&#38;gt;&#38;lt;td&#38;gt;SSL 2.0&#12289;SSL 3.0&#38;lt;/td&#38;gt;&#38;lt;td&#38;gt;&#33030;&#24369;&#24615;&#12364;&#30693;&#12425;&#12428;&#12390;&#12362;&#12426;&#12289;&#20351;&#29992;&#31105;&#27490;&#38;lt;/td&#38;gt;&#38;lt;/tr&#38;gt;&#38;lt;tr&#38;gt;&#38;lt;td&#38;gt;TLS 1.0&#12289;1.1&#38;lt;/td&#38;gt;&#38;lt;td&#38;gt;2021&#24180;&#12395;RFC 8996&#12391;&#38750;&#25512;&#22888;&#12290;&#20027;&#35201;&#12502;&#12521;&#12454;&#12470;&#12418;&#23550;&#24540;&#12434;&#32066;&#20102;&#38;lt;/td&#38;gt;&#38;lt;/tr&#38;gt;&#38;lt;tr&#38;gt;&#38;lt;td&#38;gt;TLS 1.2&#38;lt;/td&#38;gt;&#38;lt;td&#38;gt;&#29694;&#22312;&#12418;&#24195;&#12367;&#20351;&#12431;&#12428;&#12427;&#12290;&#35373;&#23450;&#27425;&#31532;&#12391;&#23433;&#20840;&#12395;&#20351;&#12360;&#12427;&#38;lt;/td&#38;gt;&#38;lt;/tr&#38;gt;&#38;lt;tr&#38;gt;&#38;lt;td&#38;gt;TLS 1.3&#38;lt;/td&#38;gt;&#38;lt;td&#38;gt;&#26368;&#26032;&#12398;&#29256;(RFC 8446)&#12290;&#24369;&#12356;&#26041;&#24335;&#12364;&#20181;&#27096;&#12363;&#12425;&#21462;&#12426;&#38500;&#12363;&#12428;&#12289;&#25509;&#32154;&#12418;&#36895;&#12356;&#38;lt;/td&#38;gt;&#38;lt;/tr&#38;gt;&#38;lt;/tbody&#38;gt;&#38;lt;/table&#38;gt;TLS&#12398;&#30906;&#35469;&#26041;&#27861;&#12469;&#12540;&#12496;&#12540;&#12364;&#29305;&#23450;&#12398;&#29256;&#12434;&#21463;&#12369;&#20184;&#12369;&#12427;&#12363;&#12399;&#12289;&#29256;&#12434;&#25351;&#23450;&#12375;&#12390;&#25509;&#32154;&#12375;&#12390;&#35519;&#12409;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt; &#38;lt;code&#38;gt;openssl s_client -connect example.com:443 -servername example.com -tls1_2 &#38;amp;lt;/dev/null 2&#38;amp;gt;/dev/null &#124; grep -E &#38;#039;Protocol&#124;Cipher&#38;#039;openssl s_client -connect example.com:443 -servername example.com -tls1_3 &#38;amp;lt;/dev/null 2&#38;amp;gt;/dev/null &#124; grep -E &#38;#039;Protocol&#124;Cipher&#38;#039;&#38;lt;/code&#38;gt; &#12300;Cipher is (NONE)&#12301;&#12392;&#20986;&#12428;&#12400;&#12289;&#12381;&#12398;&#29256;&#12399;&#21463;&#12369;&#20184;&#12369;&#12390;&#12356;&#12414;&#12379;&#12435;&#12290;&#29256;&#12392;&#26263;&#21495;&#12473;&#12452;&#12540;&#12488;&#12434;&#19968;&#35239;&#12377;&#12427;&#12395;&#12399;&#12289;&#38;lt;code&#38;gt;nmap --script ssl-enum-ciphers -p 443 example.com&#38;lt;/code&#38;gt; &#12418;&#20351;&#12360;&#12414;&#12377;&#12290;&#33258;&#20998;&#12398;&#12469;&#12452;&#12488;&#12395;&#12384;&#12369;&#23455;&#34892;&#12375;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt;&#12362;&#20351;&#12356;&#12398;OpenSSL&#12364;&#21476;&#12356;&#29256;&#12391;&#12398;&#25509;&#32154;&#33258;&#20307;&#12434;&#28961;&#21177;&#12395;&#12375;&#12390;&#12356;&#12427;&#22580;&#21512;&#12399;&#12289;&#32080;&#26524;&#12364;&#12300;&#25298;&#21542;&#12301;&#12392;&#21306;&#21029;&#12391;&#12365;&#12414;&#12379;&#12435;&#12290;&#38;lt;br/&#38;gt;TLS&#12398;&#35373;&#23450;&#20363;TLS 1.2&#12392;1.3&#12384;&#12369;&#12434;&#35377;&#21487;&#12377;&#12427;&#20363;&#12391;&#12377;&#12290;&#26263;&#21495;&#12473;&#12452;&#12540;&#12488;&#12398;&#20006;&#12403;&#12399;&#12289;&#25163;&#12391;&#26360;&#12363;&#12378;&#12289;Mozilla&#12398;SSL Configuration Generator&#12398;&#20986;&#21147;&#12434;&#20351;&#12358;&#12398;&#12364;&#30906;&#23455;&#12391;&#12377;&#12290;&#38;lt;br/&#38;gt;nginx&#12398;&#20363;&#12391;&#12377;&#12290;&#38;lt;br/&#38;gt; &#38;lt;code&#38;gt;ssl_protocols TLSv1.2 TLSv1.3;&#38;lt;/code&#38;gt; Apache&#12398;&#20363;&#12391;&#12377;&#12290;&#38;lt;br/&#38;gt; &#38;lt;code&#38;gt;SSLProtocol -all +TLSv1.2 +TLSv1.3&#38;lt;/code&#38;gt; WordPress&#20596;&#12395;&#12399;&#12289;TLS&#12398;&#35373;&#23450;&#12399;&#12354;&#12426;&#12414;&#12379;&#12435;&#12290;&#12524;&#12531;&#12479;&#12523;&#12469;&#12540;&#12496;&#12540;&#12391;&#12399;&#12289;&#12469;&#12540;&#12496;&#12540;&#12398;&#31649;&#29702;&#30011;&#38754;&#12391;TLS&#12398;&#26368;&#20302;&#12496;&#12540;&#12472;&#12519;&#12531;&#12434;&#36984;&#12406;&#12398;&#12364;&#19968;&#33324;&#30340;&#12391;&#12377;&#12290;&#38;lt;br/&#38;gt;&#12424;&#12367;&#12354;&#12427;&#38291;&#36949;&#12356;&#12392;&#27880;&#24847;&#28857;&#12300;&#21476;&#12356;&#31471;&#26411;&#12398;&#12383;&#12417;&#12395;&#12301;&#12392;TLS 1.0&#12420;1.1&#12434;&#27531;&#12377;&#21069;&#12395;&#12289;&#23455;&#38555;&#12398;&#21033;&#29992;&#32773;&#12398;&#21106;&#21512;&#12434;&#12525;&#12464;&#12391;&#30906;&#12363;&#12417;&#12414;&#12377;&#12290;nginx&#12391;&#12399;&#22793;&#25968; &#38;lt;code&#38;gt;$ssl_protocol&#38;lt;/code&#38;gt;&#12289;Apache&#12391;&#12399; &#38;lt;code&#38;gt;%{SSL_PROTOCOL}x&#38;lt;/code&#38;gt; &#12391;&#12525;&#12464;&#12395;&#27531;&#12379;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt;&#35388;&#26126;&#26360;&#12398;&#26399;&#38480;&#20999;&#12428;&#12420;&#21517;&#21069;&#12398;&#19981;&#19968;&#33268;&#12399;&#12289;TLS&#12398;&#29256;&#12391;&#12399;&#12394;&#12367;&#35388;&#26126;&#26360;&#12398;&#21839;&#38988;&#12391;&#12377;&#12290;&#38;lt;br/&#38;gt;CDN&#12420;&#12525;&#12540;&#12489;&#12496;&#12521;&#12531;&#12469;&#12540;&#12434;&#20351;&#12387;&#12390;&#12356;&#12427;&#22580;&#21512;&#12289;TLS&#12434;&#32066;&#31471;&#12377;&#12427;&#20596;&#12398;&#35373;&#23450;&#12364;&#12289;&#21033;&#29992;&#32773;&#12363;&#12425;&#35211;&#12360;&#12427;&#35373;&#23450;&#12395;&#12394;&#12426;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt;HTTP&#12398;&#12414;&#12414;&#12398;&#20837;&#21475;&#12364;&#27531;&#12387;&#12390;&#12356;&#12427;&#12392;&#12289;TLS&#12434;&#35373;&#23450;&#12375;&#12390;&#12418;&#24847;&#21619;&#12364;&#12354;&#12426;&#12414;&#12379;&#12435;&#12290;HTTP&#12363;&#12425;HTTPS&#12408;&#12398;&#36578;&#36865;&#12418;&#30906;&#35469;&#12375;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt;&#38;lt;br/&#38;gt;Web&#12469;&#12452;&#12488; &#12475;&#12461;&#12517;&#12522;&#12486;&#12451;&#12481;&#12455;&#12483;&#12459;&#12540;&#12391;&#30906;&#35469;&#12377;&#12427;Web&#12469;&#12452;&#12488; &#12475;&#12461;&#12517;&#12522;&#12486;&#12451;&#12481;&#12455;&#12483;&#12459;&#12540;&#12399;&#12289;&#21463;&#12369;&#20184;&#12369;&#12390;&#12356;&#12427;TLS&#12398;&#29256;&#12289;&#24369;&#12356;&#26263;&#21495;&#12473;&#12452;&#12540;&#12488;&#12289;HTTP&#12363;&#12425;HTTPS&#12408;&#12398;&#36578;&#36865;&#12398;&#26377;&#28961;&#12434;&#35386;&#26029;&#12375;&#12414;&#12377;&#12290;TLS 1.3&#12395;&#26410;&#23550;&#24540;&#12398;&#22580;&#21512;&#12418;&#12289;&#21442;&#32771;&#24773;&#22577;&#12392;&#12375;&#12390;&#31034;&#12375;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt;&#38306;&#36899;&#29992;&#35486;SSL/TLS&#35388;&#26126;&#26360;&#38;lt;br/&#38;gt;HSTS&#38;lt;br/&#38;gt;&#28151;&#22312;&#12467;&#12531;&#12486;&#12531;&#12484;&#38;lt;br/&#38;gt;&#33030;&#24369;&#24615;&#35386;&#26029;&#38;lt;br/&#38;gt;&#38;lt;br/&#38;gt;&#12469;&#12452;&#12488;&#12398;&#35373;&#23450;&#12434;&#28961;&#26009;&#12391;&#30906;&#35469;&#12377;&#12427;&#12469;&#12452;&#12488;&#12398;URL&#12434;&#20837;&#21147;&#12377;&#12427;&#12384;&#12369;&#12391;&#12289;TLS &#12394;&#12393;&#12398;&#35373;&#23450;&#29366;&#27841;&#12434;&#35386;&#26029;&#12391;&#12365;&#12414;&#12377;&#12290;Web&#12469;&#12452;&#12488; &#12475;&#12461;&#12517;&#12522;&#12486;&#12451;&#12481;&#12455;&#12483;&#12459;&#12540;&#12300;Security Checker X&#12301;&#12399;&#12289;&#30331;&#37682;&#12394;&#12375;&#12391;&#20351;&#12360;&#12414;&#12377;&#12290;&#38;lt;br/&#38;gt;&#60;/div&#62;"  href="https://slt-inc.jp/glossary/tls/"  data-gt-translate-attributes='[{"attribute":"data-cmtooltip", "format":"html"}]'  tabindex='0' role='link'>TLS</a>&#12398;&#29256;&#12434;&#12289;&#12502;&#12521;&#12454;&#12470;&#12289;openssl&#12289;curl&#12391;&#30906;&#12363;&#12417;&#12427;&#25163;&#38918;&#12290;&#20986;&#21147;&#12398;&#35501;&#12415;&#26041;&#12289;&#26399;&#38480;&#20999;&#12428;&#12398;&#23550;&#20966;&#12289;&#33258;&#21205;&#26356;&#26032;&#12392;&#30435;&#35222;&#12289;2029&#24180;&#12395;47&#26085;&#12392;&#12394;&#12427;&#26377;&#21177;&#26399;&#38291;&#12398;&#30701;&#32302;&#12414;&#12391;&#25972;&#29702;&#12375;&#12390;&#12356;&#12414;&#12377;&#12290;</p>
<p>The post <a href="https://slt-inc.jp/article/ssl-tls-certificate-check/">SSL/TLS証明書のチェック方法|有効期限・チェーン・通信方式の確認手順</a> first appeared on <a href="https://slt-inc.jp">総合デジタルマーケティング企業 エスライン・テクノロジーズ</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="slt-art">
<div class="slt-meta">最終確認日: 2026年10月12日 / 編集: エスライン・テクノロジーズ株式会社 Webサイトセキュリティ編集チーム</div>
<div class="slt-lead"><p class="slt-lead-label">この記事の結論</p><p><a href="https://slt-inc.jp/glossary/ssl-tls-certificate/">SSL/TLS証明書</a>の確認は、有効期限、ホスト名(SAN)の一致、中間証明書を含むチェーンの3点が基本です。PCのブラウザは足りない中間証明書を補うことがあるため、チェーンはopensslの『Verify return code: 0 (ok)』で判定します。TLS 1.2と1.3だけが有効か、HTTPが301でHTTPSへ転送されるかも確認の対象です。公的な証明書の最長有効期間は、2026年3月15日以降の発行分で200日、2029年3月15日以降は47日になるため、更新は自動化して外から監視します。</p></div>

<h2>SSL/TLS証明書で確認する6項目と合格の基準</h2>
<p>確認する項目は、有効期限、ホスト名(SAN)、チェーン、<a href="https://slt-inc.jp/glossary/tls/">TLS</a>の版、暗号スイート、HTTPSへの転送の6つです。項目ごとに合格の基準を先に決めておくと、ブラウザやコマンドの結果をそのまま判定に使えます。</p>
<div class="slt-table-wrap"><table class="slt-table"><thead><tr><th>項目</th><th>合格の基準</th><th>確認の手段</th><th>不合格のときの症状</th></tr></thead><tbody>
<tr><td>有効期限</td><td>残りが有効期間の3分の1を超えている</td><td>ブラウザ、openssl x509</td><td>画面全体の警告、API連携の停止</td></tr>
<tr><td>ホスト名(SAN)</td><td>使うすべてのホスト名がSANに入っている</td><td>ブラウザ、openssl x509</td><td>名前が一致しないという警告</td></tr>
<tr><td>チェーン</td><td>中間証明書まで送られ、検証結果が0 (ok)</td><td>openssl s_client</td><td>curlや外部システムからの接続が失敗</td></tr>
<tr><td>TLSの版</td><td>1.2と1.3は接続でき、1.0と1.1は拒否される</td><td>openssl s_client</td><td>診断で古い方式を指摘される</td></tr>
<tr><td>暗号スイート</td><td>ECDHEとAEAD(AES-GCM、ChaCha20-Poly1305)に限る</td><td>openssl s_client、デベロッパーツール</td><td>診断で弱い暗号を指摘される</td></tr>
<tr><td>HTTPS転送とHSTS</td><td>HTTPは301でHTTPSへ移り、HSTSのヘッダーがある</td><td>curl</td><td>『保護されていない通信』の表示、HTTPを開く前の警告</td></tr>
</tbody></table></div>
<p>期限の基準を『残り3分の1』としたのは、Let&#8217;s EncryptとCertbot(4.0以降)の更新時期に合わせたためです。200日の証明書なら残り約66日、90日なら残り30日が目安です。</p>
<figure class="slt-figure"><svg role="img" viewBox="0 0 800 420" xmlns="http://www.w3.org/2000/svg"><title>証明書の確認の流れと合格の基準</title><desc>ブラウザで開く、有効期限を読む、SANを確かめる、チェーンを確かめる、TLSの版を試す、HTTPとHSTSを見る、の6段階を上から順に並べ、各段階の右に合格の基準を示した図。</desc><defs><marker id="slt-f1-arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="5" markerHeight="5" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="#4A5C82"/></marker></defs><text x="70" y="30" font-size="22" font-weight="bold" fill="#10265A">確認すること</text><text x="496" y="30" font-size="22" font-weight="bold" fill="#10265A">合格の基準</text><line x1="34" y1="50" x2="34" y2="400" stroke="#4A5C82" stroke-width="3" marker-end="url(#slt-f1-arrow)"/><rect x="55" y="48" width="370" height="48" rx="8" fill="#EEF2F9" stroke="#10265A" stroke-width="3"/><text x="72" y="80" font-size="22" fill="#10265A">1 ブラウザで開く</text><line x1="428" y1="72" x2="472" y2="72" stroke="#4A5C82" stroke-width="3" marker-end="url(#slt-f1-arrow)"/><rect x="480" y="48" width="300" height="48" rx="8" fill="#FFFFFF" stroke="#4A5C82" stroke-width="3"/><text x="496" y="80" font-size="22" fill="#10265A">警告が出ない</text><rect x="55" y="109" width="370" height="48" rx="8" fill="#EEF2F9" stroke="#10265A" stroke-width="3"/><text x="72" y="141" font-size="22" fill="#10265A">2 有効期限を読む</text><line x1="428" y1="133" x2="472" y2="133" stroke="#4A5C82" stroke-width="3" marker-end="url(#slt-f1-arrow)"/><rect x="480" y="109" width="300" height="48" rx="8" fill="#FFFFFF" stroke="#4A5C82" stroke-width="3"/><text x="496" y="141" font-size="22" fill="#10265A">残りが期間の3分の1超</text><rect x="55" y="170" width="370" height="48" rx="8" fill="#EEF2F9" stroke="#10265A" stroke-width="3"/><text x="72" y="202" font-size="22" fill="#10265A">3 SANを確かめる</text><line x1="428" y1="194" x2="472" y2="194" stroke="#4A5C82" stroke-width="3" marker-end="url(#slt-f1-arrow)"/><rect x="480" y="170" width="300" height="48" rx="8" fill="#FFFFFF" stroke="#4A5C82" stroke-width="3"/><text x="496" y="202" font-size="22" fill="#10265A">全ホスト名を含む</text><rect x="55" y="231" width="370" height="48" rx="8" fill="#EEF2F9" stroke="#10265A" stroke-width="3"/><text x="72" y="263" font-size="22" fill="#10265A">4 チェーンを確かめる</text><line x1="428" y1="255" x2="472" y2="255" stroke="#4A5C82" stroke-width="3" marker-end="url(#slt-f1-arrow)"/><rect x="480" y="231" width="300" height="48" rx="8" fill="#FFFFFF" stroke="#4A5C82" stroke-width="3"/><text x="496" y="263" font-size="22" fill="#10265A">return code: 0 (ok)</text><rect x="55" y="292" width="370" height="48" rx="8" fill="#EEF2F9" stroke="#10265A" stroke-width="3"/><text x="72" y="324" font-size="22" fill="#10265A">5 TLSの版を試す</text><line x1="428" y1="316" x2="472" y2="316" stroke="#4A5C82" stroke-width="3" marker-end="url(#slt-f1-arrow)"/><rect x="480" y="292" width="300" height="48" rx="8" fill="#FFFFFF" stroke="#4A5C82" stroke-width="3"/><text x="496" y="324" font-size="22" fill="#10265A">1.0と1.1は接続不可</text><rect x="55" y="353" width="370" height="48" rx="8" fill="#EEF2F9" stroke="#10265A" stroke-width="3"/><text x="72" y="385" font-size="22" fill="#10265A">6 HTTPとHSTSを見る</text><line x1="428" y1="377" x2="472" y2="377" stroke="#4A5C82" stroke-width="3" marker-end="url(#slt-f1-arrow)"/><rect x="480" y="353" width="300" height="48" rx="8" fill="#FFFFFF" stroke="#4A5C82" stroke-width="3"/><text x="496" y="385" font-size="22" fill="#10265A">301転送とHSTSあり</text></svg><figcaption>図1 証明書の確認の流れ。上から順に確かめ、右の基準をすべて満たせば合格です。</figcaption></figure>
<p>6項目をまとめて外から確かめるなら、当社の無料ツール『<a href="https://slt-inc.jp/service/security-checker/">Webサイトのセキュリティチェック</a>』も使えます。URLを入れるだけで、証明書の期限、ホスト名、中間証明書の不足、古いTLSや弱い暗号、HTTPSへの転送などを確認できます(登録不要)。</p>
<p>外から見える設定を受動的に調べる検査のため、<a href="https://slt-inc.jp/glossary/vulnerability-assessment/">脆弱性診断</a>の代わりにはなりません。役割の違いは『<a href="https://slt-inc.jp/article/vulnerability-assessment-vs-simple-check/">簡易チェックと脆弱性診断の違い</a>』に、証明書以外の点検項目は『<a href="https://slt-inc.jp/article/website-security-check-items/">Webサイトのセキュリティチェック項目30選</a>』にまとめています。</p>

<h2>証明書のチェーンの仕組み(ルート、中間、サーバー証明書)</h2>
<p>ブラウザは、サーバー証明書から中間証明書をたどり、端末に入っているルート証明書に行き着けたときだけ証明書を信頼します。サーバーが送るのはサーバー証明書と中間証明書で、ルート証明書は送らなくてかまいません(TLS 1.3の仕様、RFC 8446)。</p>
<p>ルート証明書は認証局の大本で、OSやブラウザの信頼ストアに最初から入っています。中間証明書はルート証明書の署名を受けた認証局の証明書で、サーバー証明書に署名する役割です。サーバー証明書はドメインごとに発行され、SAN(サブジェクトの代替名)に対象のホスト名が並びます。</p>
<figure class="slt-figure"><svg role="img" viewBox="0 0 800 400" xmlns="http://www.w3.org/2000/svg"><title>証明書のチェーンの構造と、サーバーが送る範囲</title><desc>ルート証明書が中間証明書に署名し、中間証明書がサーバー証明書に署名する3段の構造。中間証明書とサーバー証明書を赤い破線で囲み、サーバーが送る範囲であることを示す。ルート証明書は端末の信頼ストアにあり、サーバーは送らなくてよい。</desc><defs><marker id="slt-f2-arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="5" markerHeight="5" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="#10265A"/></marker></defs><rect x="60" y="24" width="300" height="72" rx="10" fill="#EEF2F9" stroke="#10265A" stroke-width="3"/><text x="210" y="68" font-size="24" font-weight="bold" fill="#10265A" text-anchor="middle">ルート証明書</text><line x1="210" y1="98" x2="210" y2="158" stroke="#10265A" stroke-width="3" marker-end="url(#slt-f2-arrow)"/><text x="226" y="136" font-size="22" fill="#10265A">署名</text><rect x="40" y="146" width="340" height="244" rx="14" fill="none" stroke="#D00A0A" stroke-width="3" stroke-dasharray="10 8"/><rect x="60" y="164" width="300" height="72" rx="10" fill="#EEF2F9" stroke="#10265A" stroke-width="3"/><text x="210" y="208" font-size="24" font-weight="bold" fill="#10265A" text-anchor="middle">中間証明書</text><line x1="210" y1="238" x2="210" y2="298" stroke="#10265A" stroke-width="3" marker-end="url(#slt-f2-arrow)"/><text x="226" y="276" font-size="22" fill="#10265A">署名</text><rect x="60" y="304" width="300" height="72" rx="10" fill="#FFFFFF" stroke="#10265A" stroke-width="3"/><text x="210" y="348" font-size="24" font-weight="bold" fill="#10265A" text-anchor="middle">サーバー証明書</text><text x="400" y="54" font-size="22" fill="#10265A">端末の信頼ストアにある</text><text x="400" y="86" font-size="22" fill="#10265A">サーバーは送らなくてよい</text><line x1="382" y1="225" x2="396" y2="225" stroke="#D00A0A" stroke-width="3"/><text x="400" y="232" font-size="22" font-weight="bold" fill="#10265A">サーバーが送る範囲</text><text x="400" y="264" font-size="22" fill="#10265A">(fullchain.pemの中身)</text><text x="400" y="328" font-size="22" fill="#10265A">中間証明書が欠けると</text><text x="400" y="360" font-size="22" fill="#10265A">curlやアプリで失敗する</text></svg><figcaption>図2 チェーンの構造。ルート証明書が中間証明書に、中間証明書がサーバー証明書に署名します。サーバーが送るのは赤い破線の範囲で、ブラウザはサーバー証明書から上へたどり、端末にあるルート証明書で検証を終えます。</figcaption></figure>
<p>Certbotで取得した場合は、サーバー証明書と中間証明書をこの順につないだ <code>fullchain.pem</code> をWebサーバーに設定します。</p>
<h3>PCのブラウザで開けても、チェーンの欠落は隠れる</h3>
<p>中間証明書を送っていないサーバーでも、PCのブラウザでは警告が出ないことがあります。Chromeは足りない中間証明書を証明書内の情報(AIA)から取りに行き、Firefoxは信頼された中間証明書をあらかじめ取り込んでいるためです。</p>
<p>一方、curlやOpenSSLで通信するプログラムは、足りない中間証明書を自動では補いません。同じ設定でも、外部システムからのAPI接続や監視ツールだけが『unable to get local issuer certificate』で失敗します。</p>
<div class="slt-callout is-warn"><p class="slt-callout-title">注意</p><p>『自分のPCのブラウザで開けた』は、チェーンが正しい証拠になりません。証明書を差し替えたら、opensslかcurlで外から判定します。</p></div>

<h2>ブラウザでSSL証明書を確認する手順(Chrome、Edge、Firefox、Safari)</h2>
<p>ブラウザでは、アドレスバー左端のアイコンから証明書の画面を開き、発行先、発行元、有効期間を確かめます。ChromeとEdgeは同じ形式の画面で、Firefoxはチェーンの証明書をタブで切り替えて表示します。</p>
<h3>Chromeで証明書を開く手順</h3>
<ol class="slt-steps">
<li><strong>アイコンを開く</strong>アドレスバー左端の『サイト情報を表示』アイコンをクリックします。</li>
<li><strong>接続の情報を開く</strong>『この接続は保護されています』をクリックします。</li>
<li><strong>証明書の画面を開く</strong>『証明書は有効です』をクリックすると、証明書の画面が開きます。</li>
<li><strong>期限と発行元を読む</strong>『全般』タブで、発行先、発行元、有効期間(発行日と有効期限)を確かめます。</li>
<li><strong>チェーンとSANを読む</strong>『詳細』タブの『証明書の階層』でチェーンを、『証明書のフィールド』の『証明書のサブジェクトの代替名』でSANを確かめます。</li>
</ol>
<h3>Edge、Firefox、Safariでの開き方</h3>
<div class="slt-table-wrap"><table class="slt-table"><thead><tr><th>ブラウザ</th><th>証明書を開く手順</th><th>確かめられること</th></tr></thead><tbody>
<tr><td>Edge</td><td>鍵のアイコン → 『接続がセキュリティで保護されています』 → 証明書のアイコン(『証明書を表示』)</td><td>Chromeと同じく、『全般』で期限、『詳細』の『証明書の階層』でチェーン</td></tr>
<tr><td>Firefox</td><td>鍵のアイコン → 『安全な接続』 → 『詳細を表示』 → 『セキュリティ』の『証明書を表示&#8230;』</td><td>証明書ごとのタブ、『有効期間』の『終了日時』、『主体者代替名』の『DNS 名』</td></tr>
<tr><td>Safari(Mac)</td><td>メニューバーの『Safari』 → 『接続セキュリティの詳細』</td><td>暗号化の有無。証明書の警告が出たときは『証明書を表示』で内容を確認</td></tr>
</tbody></table></div>
<h3>デベロッパーツールでTLSの版と暗号を見る</h3>
<p>TLSの版と暗号は、Chromeのデベロッパーツールの『セキュリティ』パネルで確かめられます。デベロッパーツールを開いてCtrl+Shift+P(MacはCommand+Shift+P)を押し、『セキュリティを表示』と入力すると移動できます。</p>
<p>『接続』の欄には、TLSの版(例: TLS 1.3)、鍵交換(例: X25519MLKEM768)、暗号(例: AES_128_GCM)が並びます。古い版や弱い方式を使っていると『廃止された接続設定』と表示されるので、見直しの目安になります。</p>

<h2>opensslでSSL証明書の有効期限、発行者、SANを確認する</h2>
<p><code>openssl s_client</code> でサーバーから証明書を受け取り、<code>openssl x509</code> で期限、発行者、SANを表示します。Linuxのサーバー上のほか、WindowsではGit for Windowsに付属するGit Bashでも同じコマンドが使えます。</p>
<pre class="slt-code"><code>openssl s_client -connect example.com:443 -servername example.com \
  &lt;/dev/null 2&gt;/dev/null \
  | openssl x509 -noout -subject -issuer -dates -ext subjectAltName</code></pre>
<p>出力の例です(値は説明用です)。</p>
<pre class="slt-code"><code>subject=CN=example.com
issuer=C=JP, O=Example Trust, CN=Example Intermediate CA R1
notBefore=Sep 20 00:00:00 2026 GMT
notAfter=Dec 18 23:59:59 2026 GMT
X509v3 Subject Alternative Name:
    DNS:example.com, DNS:www.example.com</code></pre>
<h3>openssl x509の出力の読み方</h3>
<ul>
<li><code>subject</code>: 証明書の主体者です。CN=の値は参考で、名前の照合にはSANが使われます(RFC 9525)。</li>
<li><code>issuer</code>: この証明書に署名した中間認証局です。</li>
<li><code>notBefore</code>、<code>notAfter</code>: 有効期間の始まりと終わりです。GMT表記なので、日本時間は9時間足します(例の期限は日本時間の2026年12月19日8時59分59秒)。</li>
<li><code>X509v3 Subject Alternative Name</code>: 証明書が有効なホスト名の一覧です。wwwの有無やサブドメインを含め、使う名前がすべて入っているかを見ます。</li>
</ul>
<p>特定の名前が含まれるかは、OpenSSL 3系なら <code>-checkhost</code> で判定できます。サーバー上の証明書ファイルは、<code>-checkend</code> に秒数を渡すと、期限までの残りがそれより短いかを終了コードで返します。</p>
<pre class="slt-code"><code>openssl s_client -connect example.com:443 -servername example.com \
  &lt;/dev/null 2&gt;/dev/null | openssl x509 -noout -checkhost www.example.com
# 例: Hostname www.example.com does match certificate

# 残り30日(2,592,000秒)を切っていれば終了コード1(Certificate will expire)
sudo openssl x509 -in /etc/letsencrypt/live/example.com/fullchain.pem \
  -noout -checkend 2592000</code></pre>
<div class="slt-callout is-note"><p class="slt-callout-title">補足</p><p><code>-ext</code> は OpenSSL 1.1.1 で加わったオプションです。それより古い版では、<code>-text</code> の出力から『DNS:』で始まる行を探します。</p></div>

<h2>opensslでチェーンの欠落と名前の不一致を判定する</h2>
<p>チェーンは、<code>s_client</code> が表示する証明書の一覧と、最後の『Verify return code』で判定します。0 (ok) なら合格で、中間証明書が欠けていると21になります。</p>
<pre class="slt-code"><code>openssl s_client -connect example.com:443 -servername example.com \
  -verify_hostname example.com &lt;/dev/null 2&gt;/dev/null \
  | grep -E '^ [0-9] s:|^   i:|^Verify return code'</code></pre>
<p>出力の例です。正常なときは、0番のサーバー証明書の発行者(i:)と、1番の中間証明書の主体者(s:)が同じ名前でつながります。中間証明書が欠けていると、1番の行が無く、21が返ります。</p>
<pre class="slt-code"><code># 正常な例
 0 s:CN=example.com
   i:C=JP, O=Example Trust, CN=Example Intermediate CA R1
 1 s:C=JP, O=Example Trust, CN=Example Intermediate CA R1
   i:C=JP, O=Example Trust, CN=Example Root CA
Verify return code: 0 (ok)

# 中間証明書が欠けている例
 0 s:CN=example.com
   i:C=JP, O=Example Trust, CN=Example Intermediate CA R1
Verify return code: 21 (unable to verify the first certificate)</code></pre>
<div class="slt-table-wrap"><table class="slt-table"><thead><tr><th>表示</th><th>意味</th><th>主な対処</th></tr></thead><tbody>
<tr><td>0 (ok)</td><td>検証に成功</td><td>対処は不要</td></tr>
<tr><td>10 (certificate has expired)</td><td>期限切れ</td><td>更新し、Webサーバーを再読み込みする</td></tr>
<tr><td>18 (self-signed certificate)</td><td>自己署名の証明書</td><td>公的な認証局の証明書に替える</td></tr>
<tr><td>20 (unable to get local issuer certificate)</td><td>発行元をたどれない</td><td>中間証明書を送る。手元の信頼ストアが古い場合もある</td></tr>
<tr><td>21 (unable to verify the first certificate)</td><td>サーバー証明書しか届いていない</td><td>中間証明書を含むfullchainを設定する</td></tr>
<tr><td>62 (hostname mismatch)</td><td>名前の不一致(-verify_hostname 指定時)</td><td>SANに名前を加えて再発行する</td></tr>
</tbody></table></div>
<div class="slt-callout is-warn"><p class="slt-callout-title">注意</p><p><code>s_client</code> は検証に失敗しても接続を続け、終了コード0で終わります。判定は『Verify return code』の行で行い、スクリプトでは <code>-verify_return_error</code> を付けて失敗を終了コードに反映させます。</p><p>また、<code>-servername</code> は接続先の名前を伝える指定(SNI)で、名前の照合はしません。名前の不一致を判定するには <code>-verify_hostname</code> を付けます。</p></div>
<h3>複数台のサーバーを1台ずつ確かめる</h3>
<p>ロードバランサーの配下に複数台があると、1台だけ古い証明書が残ることがあります。<code>-connect</code> に各サーバーのIPアドレス、<code>-servername</code> に本来のホスト名を指定すると、台ごとに確かめられます。</p>
<pre class="slt-code"><code># 203.0.113.10 は説明用のアドレス。台ごとに書き換えて実行する
openssl s_client -connect 203.0.113.10:443 -servername www.example.com \
  &lt;/dev/null 2&gt;/dev/null | openssl x509 -noout -enddate</code></pre>
<p>CDNを使っている場合は、利用者に届くCDNの証明書と、CDNが接続する元サーバー(オリジン)の証明書が別物です。両方を監視の対象に入れます。</p>

<h2>curl -vで証明書とTLSの状態を確認する</h2>
<p><code>curl -v</code> は、使われたTLSの版と暗号、証明書の期限、SANの照合、検証の結果を1回で表示します。サーバー上での動作確認や、ブラウザと結果を比べたいときに向いています。</p>
<pre class="slt-code"><code>curl -sv -o /dev/null https://example.com/ 2&gt;&amp;1 \
  | grep -E 'SSL connection|subject|(start|expire) date|issuer|verified|verify ok'</code></pre>
<p>出力の例です(値は説明用です)。</p>
<pre class="slt-code"><code>* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 / …
*   subject: CN=example.com
*   start date: Sep 20 00:00:00 2026 GMT
*   expire date: Dec 18 23:59:59 2026 GMT
*   issuer: C=JP; O=Example Trust; CN=Example Intermediate CA R1
*   subjectAltName: "example.com" matches cert's "example.com"
* SSL certificate verified via OpenSSL.</code></pre>
<p>『SSL connection using』の行がTLSの版と暗号、『expire date』が期限(GMT)、『subjectAltName』がSANの照合結果です。行末の鍵交換などの表示は、curlとTLSライブラリの組み合わせで変わります。curl 8.5など少し前の版では、最後の行が『SSL certificate verify ok.』と表示されます。</p>
<p>検証に失敗するとcurlは終了コード60で止まり、原因を英語で表示します(主な文言は後の表を参照)。</p>
<h3>Windows標準のcurlで確かめるとき</h3>
<p>Windowsに標準で入っている <code>curl.exe</code> は、Windowsの暗号機能(Schannel)で通信するため、<code>-v</code> を付けても証明書の期限や発行者が出ません。PowerShellで次のように <code>-w "%{certs}"</code> を使うと、証明書の主体者と期限を書き出せます。</p>
<pre class="slt-code"><code>curl.exe -s -o NUL -w "%{certs}" https://example.com/ |
  Select-String '^(Subject|Expire Date):'</code></pre>
<p>最初の2行がサーバー証明書の主体者と期限です(例: Expire Date:2026-12-18 23:59:59 GMT)。チェーンの欠落や名前の照合は、Git for Windowsに付属するopensslで、前の節のコマンドを使って確かめます。</p>

<h2>TLSの版と暗号スイートを確かめ、TLS 1.0と1.1を止める</h2>
<p>TLS 1.0と1.1はRFC 8996で廃止されており、TLS 1.2と1.3だけを有効にするのが現在の基準です。版を指定して接続を試し、1.2と1.3は接続でき、1.0と1.1は拒否されれば合格です。</p>
<div class="slt-table-wrap"><table class="slt-table"><thead><tr><th>版</th><th>現在の扱い</th><th>根拠</th></tr></thead><tbody>
<tr><td>SSL 3.0</td><td>使用禁止</td><td>RFC 7568(2015年6月)</td></tr>
<tr><td>TLS 1.0</td><td>廃止</td><td><a href="https://www.rfc-editor.org/rfc/rfc8996">RFC 8996</a>(2021年3月)</td></tr>
<tr><td>TLS 1.1</td><td>廃止</td><td>RFC 8996(2021年3月)</td></tr>
<tr><td>TLS 1.2</td><td>対応が必須。2026年7月に機能を凍結</td><td>RFC 9325、<a href="https://www.rfc-editor.org/rfc/rfc9851">RFC 9851</a></td></tr>
<tr><td>TLS 1.3</td><td>対応を推奨し、優先して使う</td><td>RFC 9325、RFC 8446</td></tr>
</tbody></table></div>
<pre class="slt-code"><code># 1.2と1.3は、接続できれば合格(Protocol version の行を見る)
openssl s_client -connect example.com:443 -servername example.com \
  -tls1_2 -brief &lt;/dev/null
openssl s_client -connect example.com:443 -servername example.com \
  -tls1_3 -brief &lt;/dev/null
# 1.1は、拒否されれば合格(OpenSSL 3系は SECLEVEL=0 の指定が必要)
openssl s_client -connect example.com:443 -servername example.com \
  -tls1_1 -cipher 'DEFAULT:@SECLEVEL=0' &lt;/dev/null</code></pre>
<p>1.2と1.3で『Protocol version: TLSv1.2』のように表示されれば、その版で接続できています。1.1の試験で『alert protocol version』を含むエラーが出れば、サーバーが古い版を拒否しています。1.0の確認は、<code>-tls1</code> を指定する同じ手順です。</p>
<div class="slt-callout is-warn"><p class="slt-callout-title">注意</p><p>OpenSSL 3系は、既定の安全水準(SECLEVEL)でTLS 1.0と1.1を手元側で無効にしています。指定なしで <code>-tls1_1</code> を試すと『no protocols available』と出ますが、これは手元のOpenSSLが送信を止めただけで、サーバーの設定の結果ではありません。</p><p>接続できた場合に出る『New, TLSv1.0, Cipher is …』の行は、暗号スイートが最初に定義された版を表します。実際に使われた版は『Protocol』の行で読みます。</p></div>
<h3>暗号スイートの考え方</h3>
<p>TLS 1.2の暗号スイートは、鍵交換、認証、暗号、ハッシュの組を1つの名前で表します。<code>ECDHE-RSA-AES128-GCM-SHA256</code> なら、鍵交換がECDHE、認証がRSA、暗号がAES-128-GCM、ハッシュがSHA-256です。</p>
<p>TLS 1.3の暗号スイートは、<code>TLS_AES_128_GCM_SHA256</code> のように暗号とハッシュだけを表します。鍵交換は『グループ』(X25519など)として別に決まり、どの暗号スイートも認証付き暗号(AEAD)です(RFC 8446)。</p>
<p>TLS 1.2で避けるものは、IETFの推奨文書RFC 9325が示しています。</p>
<ul>
<li>RC4: 使用禁止</li>
<li>3DES: 実効の強さが128ビットに届かない</li>
<li><code>TLS_RSA_WITH_</code>で始まる静的なRSA鍵交換: 前方秘匿性がない</li>
<li>CBCモード: encrypt_then_mac拡張を使えない場合は避ける</li>
<li><code>TLS_DHE_</code>で始まるDHE: TLS 1.2では避ける</li>
</ul>
<h3>Mozilla推奨(Intermediate)に合わせた設定例</h3>
<p>サーバー設定の推奨値には、Mozillaの『<a href="https://wiki.mozilla.org/Security/Server_Side_TLS">Server Side TLS</a>』が広く使われてきました。このガイドはMozilla外のコミュニティ作業部会TLSRefへ移り、Mozillaのページは移管先を案内しています。</p>
<p>2026年4月の6.0版で、古い端末向けの『Old』は廃止されました。一般の公開サイト向けの『Intermediate』の推奨値は次のとおりです。</p>
<div class="slt-table-wrap"><table class="slt-table"><thead><tr><th>項目</th><th>Intermediate(6.0版)の推奨値</th></tr></thead><tbody>
<tr><td>TLSの版</td><td>TLS 1.2、TLS 1.3</td></tr>
<tr><td>TLS 1.3の暗号</td><td>AES-128-GCM、AES-256-GCM、ChaCha20-Poly1305の3種(OpenSSLの既定と同じ)</td></tr>
<tr><td>TLS 1.2の暗号</td><td>鍵交換ECDHE、認証ECDSAまたはRSA、暗号AES-128-GCM、AES-256-GCM、ChaCha20-Poly1305の組み合わせ6種</td></tr>
<tr><td>鍵交換のグループ</td><td>X25519MLKEM768、X25519、prime256v1、secp384r1</td></tr>
<tr><td>証明書</td><td>ECDSA(P-256)またはRSA(2048ビット)。有効期間は90日を推奨</td></tr>
<tr><td>暗号の優先順位</td><td>クライアント側の順序に従う</td></tr>
<tr><td>HSTS</td><td>max-age=63072000(2年)</td></tr>
</tbody></table></div>
<pre class="slt-code"><code># nginx: 次の3行は http ブロックに置く
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE+AESGCM:ECDHE+CHACHA20:!PSK;
ssl_prefer_server_ciphers off;

# HTTPSの server ブロックに置く
add_header Strict-Transport-Security "max-age=63072000" always;</code></pre>
<pre class="slt-code"><code># Apache(mod_ssl)
SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLCipherSuite ECDHE+AESGCM:ECDHE+CHACHA20:!PSK
SSLHonorCipherOrder off
Header always set Strict-Transport-Security "max-age=63072000"</code></pre>
<p><code>ECDHE+AESGCM:ECDHE+CHACHA20:!PSK</code> は、表のTLS 1.2の6種だけに絞り込む短い書き方です(並び順は異なります)。使う前に、次のコマンドで6種に展開されるかを確かめます。</p>
<pre class="slt-code"><code># TLSv1.2の6行と、TLSv1.3の3行が表示されれば想定どおり
openssl ciphers -v -tls1_2 'ECDHE+AESGCM:ECDHE+CHACHA20:!PSK'</code></pre>
<p>nginxの <code>ssl_protocols</code> は、serverブロックだけに書くと既定のサーバーの値が使われる場合があるため、httpブロックに置きます。鍵交換のグループは、OpenSSL 3.5以降なら既定でX25519MLKEM768を優先するので、多くの場合は指定不要です。CDNを使っている場合は、CDN側の最小のTLSバージョンの設定が利用者との通信を決めます。</p>

<h2>HTTPからHTTPSへの転送、HSTS、混在コンテンツを確かめる</h2>
<p>HTTPのURLは301でHTTPSの同じURLへ転送し、HTTPSの応答には<a href="https://slt-inc.jp/glossary/hsts/">HSTS</a>(Strict-Transport-Security)のヘッダーを付けます。2026年9月公開のChrome 154では、HTTPの接続を開く前に確認を求める警告が既定で有効になりました(<a href="https://chromestatus.com/release-notes/154">Chrome 154のリリースノート</a>)。</p>
<p>Googleの発表では、警告の対象は最近訪れていない公開サイトで、社内などのプライベートなアドレスは対象外です。HTTPSに対応していないホスト名は、サブドメインも含めて警告の対象になります。</p>
<pre class="slt-code"><code># スキームを省くと、curlはHTTP(80番ポート)で接続する
curl -sI example.com | grep -i -E '^HTTP|^location'
curl -sI www.example.com | grep -i -E '^HTTP|^location'
# HTTPSの応答にHSTSが付いているか
curl -sI https://example.com/ | grep -i strict-transport-security</code></pre>
<p>出力の例です。</p>
<pre class="slt-code"><code>HTTP/1.1 301 Moved Permanently
Location: https://example.com/
HTTP/1.1 301 Moved Permanently
Location: https://www.example.com/
strict-transport-security: max-age=63072000</code></pre>
<p>合格の基準は、HTTPの各ホスト名が301(恒久的な転送)でHTTPSへ移ることと、HTTPSの応答にHSTSがあることです。HSTSは<a href="https://slt-inc.jp/glossary/security-headers/">セキュリティヘッダー</a>の1つで、設定の手順は『<a href="https://slt-inc.jp/article/security-headers-setup/">セキュリティヘッダーの設定方法</a>』で詳しく扱っています。</p>
<h3>HSTSを入れると、証明書のエラーは回避できなくなる</h3>
<p>HSTSを記憶したブラウザは、max-ageの期間中に証明書のエラーが起きると、警告を回避して進む選択肢を出さずに接続を止めます(<a href="https://www.rfc-editor.org/rfc/rfc6797">RFC 6797</a>の8.4節、12.1節)。期限切れがそのまま全面的な停止になるため、HSTSは自動更新と監視が動いてから設定します。</p>
<p>HSTSのヘッダーは、HTTPSの応答でエラーなく受け取ったときだけ有効になり、HTTPの応答に付けてはいけません。<code>max-age=0</code> を送ると、ブラウザに記憶された設定を消せます。</p>
<div class="slt-callout is-warn"><p class="slt-callout-title">注意</p><p><code>includeSubDomains</code> は、すべてのサブドメインがHTTPSで正しく応答することを確かめてから付けます。有効な証明書の無いサブドメインが1つでもあると、そこには接続できなくなります。TLSRefの設定生成ツールの出力には <code>includeSubDomains</code> が入っているので、貼り付ける前の確認が欠かせません。</p></div>
<h3>混在コンテンツを見つけて直す</h3>
<p><a href="https://slt-inc.jp/glossary/mixed-content/">混在コンテンツ</a>は、HTTPSのページの中で画像やスクリプトをHTTPで読み込んでいる状態です。現在のブラウザは、画像、音声、動画をHTTPSへ自動で切り替え、スクリプト、CSS、iframeなどはブロックします(<a href="https://developer.mozilla.org/ja/docs/Web/Security/Mixed_content">MDNの解説</a>)。</p>
<p>見つけるには、デベロッパーツールのコンソールで『Mixed Content』で始まる警告を探し、読み込み元のURLをHTTPSに書き換えます。直しきるまでの応急処置として、<a href="https://slt-inc.jp/glossary/csp/">CSP</a>の <code>upgrade-insecure-requests</code> でまとめてHTTPSへ切り替える方法もあります。</p>

<h2>期限切れのときの影響と、すぐやる対処</h2>
<p>期限が切れると、ブラウザは画面全体の警告を出し、API連携やアプリの通信も検証エラーで止まります。まず外から配信中の証明書を確かめ、更新、再読み込み、全台での再確認の順に進めます。</p>
<p>Chromeは『この接続ではプライバシーが保護されません』、Firefoxは『警告: 潜在的なセキュリティリスクあり』という画面に、原因を示すコードを出します。主なコードとcurlの文言は次のとおりです。</p>
<div class="slt-table-wrap"><table class="slt-table"><thead><tr><th>原因</th><th>Chromeの表示</th><th>Firefoxの表示</th><th>curlの表示(OpenSSL系)</th></tr></thead><tbody>
<tr><td>期限切れ(端末の時計のずれでも出る)</td><td>NET::ERR_CERT_DATE_INVALID</td><td>SEC_ERROR_EXPIRED_CERTIFICATE</td><td>certificate has expired</td></tr>
<tr><td>名前の不一致</td><td>NET::ERR_CERT_COMMON_NAME_INVALID</td><td>SSL_ERROR_BAD_CERT_DOMAIN</td><td>no alternative certificate subject name matches target hostname</td></tr>
<tr><td>発行元をたどれない(中間証明書の欠落など)</td><td>NET::ERR_CERT_AUTHORITY_INVALID</td><td>SEC_ERROR_UNKNOWN_ISSUER</td><td>unable to get local issuer certificate</td></tr>
</tbody></table></div>
<p>ChromeとFirefoxは、中間証明書を補えた場合は3行目の警告を出しません。対処は次の順で進めます。</p>
<ol class="slt-steps">
<li><strong>配信中の証明書を確かめる</strong><code>s_client</code> で <code>notAfter</code> を読み、どのホスト名の、どのサーバーで切れているかを特定します。</li>
<li><strong>サーバー上のファイルと比べる</strong>ファイルの期限が新しいのに配信が古いなら、更新は済んでいて再読み込みが漏れています。</li>
<li><strong>証明書を更新する</strong>ACMEなら <code>certbot renew</code> などで更新し、有料の証明書は再発行して差し替えます。</li>
<li><strong>設定を確かめて再読み込みする</strong><code>nginx -t</code> で構文を確かめてから、<code>systemctl reload nginx</code> で反映します。</li>
<li><strong>全ホスト名、全台、CDNで確かめる</strong>wwwの有無、サブドメイン、各サーバー、CDNの証明書を外から確かめます。</li>
<li><strong>止まった原因を直す</strong><code>certbot renew --dry-run</code> で失敗を再現し、80番ポートの遮断、DNSの変更、権限の不足などを直します。</li>
</ol>
<pre class="slt-code"><code># 配信中の証明書の期限
openssl s_client -connect example.com:443 -servername example.com \
  &lt;/dev/null 2&gt;/dev/null | openssl x509 -noout -enddate
# サーバー上のファイルの期限(Certbotの例)
sudo openssl x509 -in /etc/letsencrypt/live/example.com/fullchain.pem \
  -noout -enddate
# 更新し、構文を確かめてから再読み込み(nginxの例)
sudo certbot renew
sudo nginx -t &amp;&amp; sudo systemctl reload nginx</code></pre>
<div class="slt-callout is-warn"><p class="slt-callout-title">注意</p><p>Let&#8217;s EncryptのHTTP-01による確認は、80番ポートでしか行えません。HTTPSへの転送は問題ありませんが、80番ポートを閉じると更新が失敗します。</p></div>
<p>更新したのに古い証明書が出るときの原因は、再読み込みの漏れ、別の台に残った古い証明書、別に管理しているCDNの証明書、設定が別のファイルを指している、のいずれかです。直したあとは、無料の『<a href="https://slt-inc.jp/service/security-checker/">Webサイトのセキュリティチェック</a>』でも外から結果を確かめられます。原因を切り分けられないときや、更新の自動化を設計し直したいときは、<a href="https://slt-inc.jp/inquiry/">お問い合わせフォーム</a>から相談を受け付けています。</p>

<h2>自動更新(ACME)と期限の監視を仕組みにする</h2>
<p>更新は、ACME(RFC 8555)に対応した認証局とクライアントで自動にし、Webサーバーの再読み込みまでを含めます。そのうえで、自動更新が止まったことに気づけるよう、外から期限を調べる監視を別に置きます。</p>
<p>Certbotは4.0以降、残りが有効期間の3分の1を切った証明書を更新します。<code>--deploy-hook "systemctl reload nginx"</code> を付けると、更新できたときだけ再読み込みが走ります。事前の動作確認に使うのは <code>certbot renew --dry-run</code> です。</p>
<p>更新の時期を認証局から受け取るARI(RFC 9773、2025年6月発行)という仕組みもあり、Let&#8217;s Encryptはクライアントでの利用を勧めています。同社は2025年6月4日に期限切れの通知メールを終了したため、通知は自分で用意します。</p>
<pre class="slt-code"><code>#!/bin/sh
# 残り日数がしきい値を切った証明書と、検証に失敗したホストを表示する
DAYS=14
for host in example.com www.example.com; do
  cert=$(openssl s_client -connect "$host:443" -servername "$host" \
    -verify_hostname "$host" -verify_return_error &lt;/dev/null 2&gt;/dev/null \
    | openssl x509 2&gt;/dev/null)
  if [ -z "$cert" ]; then
    echo "NG $host: 接続、チェーン、名前、期限のいずれかで失敗"
  elif ! echo "$cert" | openssl x509 -noout -checkend $((DAYS * 86400)) &gt;/dev/null; then
    echo "NG $host: 残り${DAYS}日未満"
  else
    echo "OK $host"
  fi
done</code></pre>
<p>しきい値は、自動更新が動く時点より小さく、手で直す時間が残る値にします。90日の証明書は残り30日で自動更新が動くため、14日を切っていれば、自動更新が2週間以上止まっている合図です。cronで毎日動かし、NGの行が出たらチームに通知します。</p>
<ul class="slt-check">
<li>管理しているホスト名(www、サブドメイン、API、メール)と、その証明書の一覧がある</li>
<li>更新が自動で、更新後の再読み込みまで含まれている</li>
<li><code>certbot renew --dry-run</code> などの更新の試験が成功する</li>
<li>外からの期限の監視が毎日動き、通知が複数人に届く</li>
<li>2027年3月15日からの100日の上限に合わせ、手作業の更新が残っていない</li>
<li>サーバーの移転、CDNの導入、DNSの変更のあとに外から確かめる手順がある</li>
<li>HSTSを入れる前に、上の項目がすべて満たされている</li>
</ul>

<h2>有効期間の短縮の動向(2026年10月時点)</h2>
<p><a href="https://cabforum.org/2025/04/11/ballot-sc081v3-introduce-schedule-of-reducing-validity-and-data-reuse-periods/">CA/Browser Forumの決議SC-081v3</a>により、公的に信頼されるTLS証明書の最長有効期間は、2026年3月15日以降の発行分で200日になりました。2027年3月15日に100日、2029年3月15日に47日へ短くなります。</p>
<div class="slt-table-wrap"><table class="slt-table"><thead><tr><th>証明書の発行日</th><th>最長の有効期間</th><th>ドメイン確認の再利用期間</th></tr></thead><tbody>
<tr><td>2026年3月15日より前</td><td>398日</td><td>398日</td></tr>
<tr><td>2026年3月15日から</td><td>200日</td><td>200日</td></tr>
<tr><td>2027年3月15日から</td><td>100日</td><td>100日</td></tr>
<tr><td>2029年3月15日から</td><td>47日</td><td>10日</td></tr>
</tbody></table></div>
<p>決議は2025年4月11日に可決され(提案はApple)、2026年10月4日付のBaseline Requirements 2.3.1版にもこの日程が入っています。日数はnotBeforeからnotAfterまでを含めて数え、1日は86,400秒です。</p>
<p>ドメイン確認の再利用期間は、認証局がドメインの管理権を確かめた結果を使い回せる日数です。2029年には10日になるため、更新のたびにDNSやHTTPでの確認を自動で通せる仕組みが前提になります。</p>
<p><a href="https://letsencrypt.org/2025/12/02/from-90-to-45">Let&#8217;s Encryptの発表</a>によると、既定の90日は2027年2月10日に64日、2028年2月16日に45日へ短くなります。希望者向けの45日の証明書(tlsserverプロファイル)は、2026年5月13日から選べるようになりました。同社は、更新を有効期間の約3分の2の時点で行い、60日ごとのような固定の間隔に頼らないよう求めています。</p>
<div class="slt-callout is-point"><p class="slt-callout-title">ポイント</p><p>手作業の更新は、上限が100日になる2027年3月15日以降は年4回以上、47日になる2029年3月15日以降は年8回以上の作業になります。人の記憶やカレンダーに頼る運用は、2027年3月より前に自動化へ切り替えます。</p></div>

<h2>よくある質問</h2>
<div class="slt-faq"><h3>SSL証明書とTLS証明書は、違うものですか？</h3><p>同じものです。暗号化の仕組みがSSLからTLSへ置き換わったあとも『SSL証明書』という呼び名が残っており、SSL 3.0はRFC 7568で使用が禁止されています。</p></div>
<div class="slt-faq"><h3>無料の証明書と有料の証明書で、暗号の強さは変わりますか？</h3><p>変わりません。暗号の強さはTLSの版、暗号スイート、鍵の種類で決まり、証明書の価格とは関係しません。違いは、認証局が確認する範囲(ドメインの管理権だけか、組織の実在までか)や、サポートの内容です。</p></div>
<div class="slt-faq"><h3>ワイルドカード証明書は、どの名前に使えますか？</h3><p>左端の1階層だけに使えます(RFC 9525)。*.example.com は www.example.com や shop.example.com に有効です。example.com 自体や a.b.example.com には使えないため、必要ならSANに別に含めます。</p></div>
<div class="slt-faq"><h3>社内システムの証明書も、200日以内にする必要がありますか？</h3><p>CA/Browser Forumの規定の対象は、OSやブラウザに最初から入っているルートにつながる、公的に信頼される証明書です。社内の認証局(プライベートCA)が発行する証明書はこの規定の対象外ですが、社内の方針や、使う機器とソフトウェアの制限は個別に確かめます。</p></div>
<div class="slt-faq"><h3>TLS 1.2は、近いうちに使えなくなりますか？</h3><p>廃止されてはおらず、IETFのRFC 9325はTLS 1.2への対応を必須としています。ただし2026年7月のRFC 9851で機能が凍結され、耐量子計算機暗号などの新機能はTLS 1.3にだけ加わります。TLS 1.3を優先して使える状態にしておくのが、現実的な備えです。</p></div>
<div class="slt-faq"><h3>OCSPステープリングの設定は、今も必要ですか？</h3><p>使っている認証局によります。Let&#8217;s Encryptは2025年8月6日にOCSPの提供を終え、失効の情報をCRLだけで公開しているため、同社の証明書ではOCSPステープリングは働きません。ほかの認証局の証明書では、<code>openssl x509 -noout -ocsp_uri</code> でOCSPの接続先が表示されるかを確かめてから判断します。</p></div>
<div class="slt-faq"><h3>出力にX25519MLKEM768と表示されるのは問題ですか？</h3><p>問題ありません。従来のX25519に、耐量子計算機暗号のML-KEMを組み合わせた鍵交換で、OpenSSL 3.5以降は既定でこれを優先します。MozillaのServer Side TLS(6.0版)でも推奨グループの先頭に置かれており、使われるのはTLS 1.3の接続です。</p></div>

<h2>関連記事</h2>
<div class="slt-related">
<a class="slt-related-item" href="https://slt-inc.jp/article/security-headers-setup/"><span class="slt-related-thumb"><img src="https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24853-security-headers-300x200.png" srcset="https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24853-security-headers-300x200.png 300w, https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24853-security-headers-768x512.png 768w" sizes="auto, (max-width: 560px) 78vw, 300px" width="300" height="200" alt="" loading="lazy" decoding="async"></span><span class="slt-related-kind">関連記事</span><span class="slt-related-title">セキュリティヘッダーの設定方法｜HSTS、CSPの設定例つき</span></a>
<a class="slt-related-item" href="https://slt-inc.jp/article/website-security-check-items/"><span class="slt-related-thumb"><img src="https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24854-security-checklist-300x200.png" srcset="https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24854-security-checklist-300x200.png 300w, https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24854-security-checklist-768x512.png 768w" sizes="auto, (max-width: 560px) 78vw, 300px" width="300" height="200" alt="" loading="lazy" decoding="async"></span><span class="slt-related-kind">関連記事</span><span class="slt-related-title">Webサイトのセキュリティチェック項目30選｜確認方法つき一覧表</span></a>
<a class="slt-related-item" href="https://slt-inc.jp/article/vulnerability-assessment-vs-simple-check/"><span class="slt-related-thumb"><img src="https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24878-assessment-difference-300x200.png" srcset="https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24878-assessment-difference-300x200.png 300w, https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24878-assessment-difference-768x512.png 768w" sizes="auto, (max-width: 560px) 78vw, 300px" width="300" height="200" alt="" loading="lazy" decoding="async"></span><span class="slt-related-kind">関連記事</span><span class="slt-related-title">簡易チェックと脆弱性診断の違い｜無料ツールでできることと、専門業者が必要な場面</span></a>
<a class="slt-related-item" href="https://slt-inc.jp/article/wordpress-vulnerability-check/"><span class="slt-related-thumb"><img src="https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24880-wordpress-vulnerability-300x200.png" srcset="https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24880-wordpress-vulnerability-300x200.png 300w, https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24880-wordpress-vulnerability-768x512.png 768w" sizes="auto, (max-width: 560px) 78vw, 300px" width="300" height="200" alt="" loading="lazy" decoding="async"></span><span class="slt-related-kind">関連記事</span><span class="slt-related-title">WordPressの脆弱性を確認する方法｜本体、プラグインの更新と対処の手順</span></a>
</div>

<div class="slt-cta"><p class="slt-cta-title">証明書と通信の設定を、外からまとめて確かめる</p><p>URLを入れるだけで、証明書の期限、ホスト名、中間証明書の不足、古いTLSと弱い暗号、HTTPSへの転送、HSTS、混在コンテンツを確認できます。登録は不要で、無料です。診断できるのは、管理権限のあるサイトに限ります。</p><a class="slt-cta-btn" href="https://slt-inc.jp/service/security-checker/">無料でWebサイトをチェックする</a></div>
</div>
<script type="application/ld+json">{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "SSL証明書とTLS証明書は、違うものですか？", "acceptedAnswer": {"@type": "Answer", "text": "同じものです。暗号化の仕組みがSSLからTLSへ置き換わったあとも『SSL証明書』という呼び名が残っており、SSL 3.0はRFC 7568で使用が禁止されています。"}}, {"@type": "Question", "name": "無料の証明書と有料の証明書で、暗号の強さは変わりますか？", "acceptedAnswer": {"@type": "Answer", "text": "変わりません。暗号の強さはTLSの版、暗号スイート、鍵の種類で決まり、証明書の価格とは関係しません。違いは、認証局が確認する範囲(ドメインの管理権だけか、組織の実在までか)や、サポートの内容です。"}}, {"@type": "Question", "name": "ワイルドカード証明書は、どの名前に使えますか？", "acceptedAnswer": {"@type": "Answer", "text": "左端の1階層だけに使えます(RFC 9525)。*.example.com は www.example.com や shop.example.com に有効です。example.com 自体や a.b.example.com には使えないため、必要ならSANに別に含めます。"}}, {"@type": "Question", "name": "社内システムの証明書も、200日以内にする必要がありますか？", "acceptedAnswer": {"@type": "Answer", "text": "CA/Browser Forumの規定の対象は、OSやブラウザに最初から入っているルートにつながる、公的に信頼される証明書です。社内の認証局(プライベートCA)が発行する証明書はこの規定の対象外ですが、社内の方針や、使う機器とソフトウェアの制限は個別に確かめます。"}}, {"@type": "Question", "name": "TLS 1.2は、近いうちに使えなくなりますか？", "acceptedAnswer": {"@type": "Answer", "text": "廃止されてはおらず、IETFのRFC 9325はTLS 1.2への対応を必須としています。ただし2026年7月のRFC 9851で機能が凍結され、耐量子計算機暗号などの新機能はTLS 1.3にだけ加わります。TLS 1.3を優先して使える状態にしておくのが、現実的な備えです。"}}, {"@type": "Question", "name": "OCSPステープリングの設定は、今も必要ですか？", "acceptedAnswer": {"@type": "Answer", "text": "使っている認証局によります。Let's Encryptは2025年8月6日にOCSPの提供を終え、失効の情報をCRLだけで公開しているため、同社の証明書ではOCSPステープリングは働きません。ほかの認証局の証明書では、openssl x509 -noout -ocsp_uri でOCSPの接続先が表示されるかを確かめてから判断します。"}}, {"@type": "Question", "name": "出力にX25519MLKEM768と表示されるのは問題ですか？", "acceptedAnswer": {"@type": "Answer", "text": "問題ありません。従来のX25519に、耐量子計算機暗号のML-KEMを組み合わせた鍵交換で、OpenSSL 3.5以降は既定でこれを優先します。MozillaのServer Side TLS(6.0版)でも推奨グループの先頭に置かれており、使われるのはTLS 1.3の接続です。"}}]}</script><p>The post <a href="https://slt-inc.jp/article/ssl-tls-certificate-check/">SSL/TLS証明書のチェック方法|有効期限・チェーン・通信方式の確認手順</a> first appeared on <a href="https://slt-inc.jp">総合デジタルマーケティング企業 エスライン・テクノロジーズ</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Webサイトのセキュリティチェック項目30選｜確認方法つき一覧表</title>
		<link>https://slt-inc.jp/article/website-security-check-items/</link>
		
		<dc:creator><![CDATA[slt]]></dc:creator>
		<pubDate>Wed, 16 Sep 2026 01:24:00 +0000</pubDate>
				<category><![CDATA[セキュリティ]]></category>
		<category><![CDATA[記事]]></category>
		<category><![CDATA[SSL/TLS]]></category>
		<category><![CDATA[Webサイトセキュリティ]]></category>
		<category><![CDATA[セキュリティチェック]]></category>
		<category><![CDATA[セキュリティヘッダー]]></category>
		<category><![CDATA[セキュリティ対策]]></category>
		<category><![CDATA[公開ファイル]]></category>
		<category><![CDATA[無料ツール]]></category>
		<category><![CDATA[脆弱性]]></category>
		<category><![CDATA[脆弱性診断]]></category>
		<guid isPermaLink="false">https://slt-inc.jp/?p=24854</guid>

					<description><![CDATA[<p>Web&#x30B5;&#x30A4;&#x30C8;&#x306E;&#x30BB;&#x30AD;&#x30E5;&#x30EA;&#x30C6;&#x30A3;&#x30C1;&#x30A7;&#x30C3;&#x30AF;&#x3067;&#x78BA;&#x304B;&#x3081;&#x308B;30&#x9805;&#x76EE;&#x3092;&#x3001;&#x516C;&#x958B;&#x30D5;&#x30A1;&#x30A4;&#x30EB;&#x3001;&#x901A;&#x4FE1;&#x3001;&#x30D8;&#x30C3;&#x30C0;&#x30FC;&#x3001;DNS&#x3001;&#x66F4;&#x65B0;&#x3001;&#x30ED;&#x30B0;&#x30A4;&#x30F3;&#x3001;&#x904B;&#x7528;&#x306E;7&#x5206;&#x985E;&#x3067;&#x4E00;&#x89A7;&#x306B;&#x3057;&#x307E;&#x3057;&#x305F;&#x3002;&#x5404;&#x9805;&#x76EE;&#x306E;&#x78BA;&#x8A8D;&#x65B9;&#x6CD5;&#x3001;&#x5408;&#x683C;&#x306E;&#x76EE;&#x5B89;&#x3001;&#x76F4;&#x3057;&#x65B9;&#x3068;&#x3001;&#x4ECA;&#x65E5;15&#x5206;&#x3067;&#x3067;&#x304D;&#x308B;&#x70B9;&#x691C;&#x306E;&#x624B;&#x9806;&#x3092;&#x793A;&#x3057;&#x307E;&#x3059;&#x3002;</p>
<p>The post <a href="https://slt-inc.jp/article/website-security-check-items/">Webサイトのセキュリティチェック項目30選｜確認方法つき一覧表</a> first appeared on <a href="https://slt-inc.jp">総合デジタルマーケティング企業 エスライン・テクノロジーズ</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="slt-art">
<div class="slt-meta">最終確認日: 2026年10月12日 / 編集: エスライン・テクノロジーズ株式会社 Webサイトセキュリティ編集チーム</div>
<div class="slt-lead"><p class="slt-lead-label">この記事の結論</p><p>Webサイトのセキュリティチェックは30項目あり、17項目は外からブラウザや無料ツールで、13項目は管理画面と契約書で確かめます。最初の15分で、公開ファイル、証明書の期限、更新、ログインの守り、バックアップを見てください。直す順番は、被害の大きさ、見つかりやすさ、直す手間の3つで決めます。</p></div>

<h2>セキュリティチェックの30項目は、外から17、管理画面と契約で13を確かめる</h2>
<p>セキュリティチェックの30項目は、確かめる場所で2つに分かれます。公開ファイル、通信、HTTPヘッダー、DNSの17項目は外から、更新、ログイン、運用の13項目は管理画面と契約書で確かめます。</p>
<figure class="slt-figure"><svg role="img" viewBox="0 0 800 400"><title>セキュリティチェック30項目の範囲と確かめる道具</title><desc>上段は外から確かめる17項目で、ブラウザと無料ツールを使う。中段は管理画面と契約書で確かめる13項目。下段の点線は点検表の外にあるアプリの作りで、専門家の脆弱性診断が担う。</desc><rect x="20" y="16" width="580" height="112" rx="12" fill="#EEF2F9" stroke="#10265A" stroke-width="3"/><text x="44" y="60" font-size="26" font-weight="bold" fill="#10265A">外から確かめる17項目(1〜17)</text><text x="44" y="102" font-size="22" fill="#10265A">公開ファイル、通信、ヘッダー、DNS</text><rect x="620" y="16" width="160" height="112" rx="12" fill="#FFFFFF" stroke="#4A5C82" stroke-width="3"/><text x="700" y="62" font-size="22" text-anchor="middle" fill="#10265A">ブラウザ</text><text x="700" y="96" font-size="22" text-anchor="middle" fill="#10265A">無料ツール</text><rect x="20" y="144" width="580" height="112" rx="12" fill="#EEF2F9" stroke="#10265A" stroke-width="3"/><text x="44" y="188" font-size="26" font-weight="bold" fill="#10265A">管理画面で確かめる13項目(18〜30)</text><text x="44" y="230" font-size="22" fill="#10265A">更新、ログイン、バックアップ、体制</text><rect x="620" y="144" width="160" height="112" rx="12" fill="#FFFFFF" stroke="#4A5C82" stroke-width="3"/><text x="700" y="190" font-size="22" text-anchor="middle" fill="#10265A">管理画面</text><text x="700" y="224" font-size="22" text-anchor="middle" fill="#10265A">契約書</text><rect x="20" y="272" width="580" height="112" rx="12" fill="#FFFFFF" stroke="#D00A0A" stroke-width="3" stroke-dasharray="12 8"/><text x="44" y="316" font-size="26" font-weight="bold" fill="#10265A">点検表の外にあるアプリの作り</text><text x="44" y="358" font-size="22" fill="#10265A">入力フォーム、会員機能、決済</text><rect x="620" y="272" width="160" height="112" rx="12" fill="#FFFFFF" stroke="#D00A0A" stroke-width="3"/><text x="700" y="318" font-size="22" text-anchor="middle" fill="#10265A">専門家の</text><text x="700" y="352" font-size="22" text-anchor="middle" fill="#10265A">脆弱性診断</text></svg><figcaption>図1 30項目の範囲。上段の17項目は外から、中段の13項目は管理画面と契約書で確かめる。下段のアプリの作りは点検表の外にあり、専門家の脆弱性診断が担う</figcaption></figure>
<p>外から確かめられる設定は、攻撃者にも同じように見えています。証明書の期限切れや公開されたファイルは、URLを知っていれば誰でも気づけます。</p>
<p>管理画面の項目は外から見えないため、無料ツールでは確かめられません。IPAの『<a href="https://www.ipa.go.jp/security/vuln/websecurity/sitecheck.html">安全なウェブサイトの運用管理に向けての20ヶ条</a>』も、パスワード、アカウント、ログといった運用の条項を多く含みます。</p>
<div class="slt-callout is-note"><p class="slt-callout-title">この点検表で分からないこと</p><p>入力フォームや会員機能の作りに潜む問題、たとえばSQLインジェクションや<a href="https://slt-inc.jp/glossary/xss/">XSS</a>は、外からの観察と管理画面では確かめられません。個人情報や決済を扱うサイトは、専門家による<a href="https://slt-inc.jp/glossary/vulnerability-assessment/">脆弱性診断</a>を組み合わせます。</p></div>

<h2>今日15分でできる最初の点検</h2>
<p>最初の15分は、見つかったときの被害が大きい5点に絞ります。ブラウザとCMSの管理画面があれば、専門の道具は要りません。</p>
<ol class="slt-steps">
<li><strong>公開ファイルを開いてみる(2分)</strong>ブラウザで自社ドメインの /.git/HEAD と /.env を開きます。『見つかりません』や『Forbidden』と出れば合格です。設定値のような文字が表示されたら、ほかの作業より先に項目1の対処へ進みます。</li>
<li><strong>証明書の期限を見る(2分)</strong>アドレスバーの鍵アイコンから証明書を開き、有効期限を確かめます。残りが30日を切っていたら、自動更新が動いているかをサーバーの管理画面で見ます。</li>
<li><strong>更新とログインの守りを見る(5分)</strong>CMSの管理画面で、本体とプラグインに未適用の更新がないかを見ます。管理者アカウントで2段階認証が有効か、パスワードをほかのサービスと使い回していないかも確かめます。</li>
<li><strong>バックアップの最終日を見る(3分)</strong>サーバーの管理画面で、最後に取得した日と保存先を確かめます。更新を当てるのは、この確認の後です。</li>
<li><strong>外から見える設定をまとめて診断する(3分)</strong><a href="https://slt-inc.jp/service/security-checker/">無料のWebサイトセキュリティチェック</a>にURLを入れ、重大度が『緊急』と『高』の指摘だけを書き出します。登録は要らず、通常30秒から90秒で結果が出ます。</li>
</ol>
<p>ターミナルを使える場合は、次の2行で項目5、6、9、11〜13の応答をまとめて確かめられます。1行目のようにスキームを省くと、curlはhttpで接続します。</p>
<pre class="slt-code"><code>curl -I example.com
curl -I https://example.com/

例: 1行目の応答(この形なら項目6は合格)
HTTP/1.1 301 Moved Permanently
Location: https://example.com/

例: 2行目の応答で探すヘッダー
strict-transport-security: max-age=31536000
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff</code></pre>
<div class="slt-callout is-warn"><p class="slt-callout-title">Windowsとボット対策の注意</p><p>Windows PowerShell 5.1の curl は、Invoke-WebRequestという別のコマンドの別名です。Windowsに標準で入っている curl.exe を使い、curl.exe -I と打ちます。CDNのボット対策でcurlだけが止められる場合は、開発者ツールのNetworkタブで応答ヘッダーを見ます。</p></div>

<h2>外から確かめる17項目(公開ファイル、通信、ヘッダー、DNS)</h2>
<p>外から確かめる17項目は、ログインせずに、ブラウザ、curl、無料ツールで確かめられます。表は、確認方法と合格の目安、放置の危険、直し方の順に並べています。</p>

<h3>公開してはいけないファイルとページ(項目1〜5)</h3>
<p>よく使われるファイル名は、URLを推測して機械的に試せます。OWASPの検査ガイド(WSTG-CONF-04)も、.bak などの古い写しがソースコードや認証情報を表示する危険を挙げています。確認は、自社のサイトだけに限ります。</p>
<div class="slt-table-wrap"><table class="slt-table"><thead><tr><th>項目</th><th>確認方法と合格の目安</th><th>放置の危険</th><th>直し方</th></tr></thead><tbody>
<tr><td>1. 開発用のファイル</td><td>/.git/HEAD、/.env、JSのURLの末尾に .map を付けたURLを開く。403か404なら合格。『ref: refs/heads/』や『DB_PASSWORD=』が出たら不合格</td><td>ソースコードと変更履歴、DBのパスワード、APIキーを取られる</td><td>公開フォルダから外し、サーバー設定で拒否する(下の例)。読まれた鍵とパスワードは作り直す</td></tr>
<tr><td>2. バックアップとログ</td><td>公開フォルダに .zip、.sql、.bak、.old や、末尾が ~ のファイルがない。/wp-content/debug.log が開けなければ合格</td><td>顧客情報を含むDBや設定が丸ごと持ち出される。ログからは内部のパスやエラーが分かる</td><td>削除し、保存先を公開フォルダの外へ移す。デバッグログは公開されない場所に書き出す</td></tr>
<tr><td>3. 一覧表示と情報ページ</td><td>フォルダのURLで一覧表示(<a href="https://slt-inc.jp/glossary/directory-listing/">ディレクトリリスティング</a>)が出ず、/phpinfo.php や /phpmyadmin/ が開かなければ合格</td><td>ファイル名、構成、PHPの設定値を知られる。DB管理画面はパスワードの総当たりを受ける</td><td>Apacheは <code>Options -Indexes</code> で一覧を止める。phpinfoは消し、DB管理画面はサーバーの管理画面経由に限る</td></tr>
<tr><td>4. 不要なページとテスト環境</td><td>test. や dev. のサブドメイン、/old/ などの旧ページ、終わったキャンペーンを書き出し、社外から開けなければ合格</td><td>誰も更新しないCMSが残り、そこから侵入される。テスト環境に本番データの写しがあれば漏れる</td><td>不要なら消す。残すならBasic認証などで社外から隠し、公開の終了日に閉じる手順を決める</td></tr>
<tr><td>5. エラーと版の表示</td><td>存在しないURLを開いてもファイルのパスやSQL文が出ず、curl -I の Server と X-Powered-By に版番号がなければ合格</td><td>構成と版から、狙う脆弱性を絞り込まれる</td><td>PHPは <code>display_errors=Off</code> と <code>expose_php=Off</code>。nginxは <code>server_tokens off</code>、Apacheは <code>ServerTokens Prod</code></td></tr>
</tbody></table></div>
<pre class="slt-code"><code># Apache(.htaccess)の例: .git、.svn、.env を含むURLに404を返す
RedirectMatch 404 /\.(git|svn|env)

# nginxの例: 同じURLへのアクセスを拒否する(403を返す)
location ~ /\.(git|svn|env) {
    deny all;
}</code></pre>
<p>どちらの例も、証明書の自動更新が使う /.well-known/ には影響しません。見つかった後の手順は、<a href="https://slt-inc.jp/article/git-env-file-exposure/">.gitや.envが公開されていたときの確認と対処</a>で扱っています。</p>
<div class="slt-callout is-warn"><p class="slt-callout-title">版を隠しても脆弱性は残る</p><p>項目5で版の表示を消すと、狙いを絞られにくくなるだけです。古いソフトウェアの脆弱性そのものは消えないため、本当の対策は項目18〜21の更新です。</p></div>

<h3>通信の暗号化と証明書(項目6〜10)</h3>
<p>HTTPSは、入力内容を盗み見と書き換えから守る土台です。20ヶ条でも、通信の暗号化は独立した1条になっています。<a href="https://slt-inc.jp/glossary/ssl-tls-certificate/">SSL/TLS証明書</a>の詳しい見方は、<a href="https://slt-inc.jp/article/ssl-tls-certificate-check/">SSL/TLS証明書のチェック方法</a>で扱っています。</p>
<div class="slt-table-wrap"><table class="slt-table"><thead><tr><th>項目</th><th>確認方法と合格の目安</th><th>放置の危険</th><th>直し方</th></tr></thead><tbody>
<tr><td>6. HTTPSへの転送</td><td><code>curl -I example.com</code> のようにhttpで開き、301か308とhttps://の転送先が出れば合格。wwwあり、なしの両方を見る</td><td>フォームの入力内容が暗号化されずに流れる。Chromeは『保護されていない通信』と表示する</td><td>サーバーで常時SSLを有効にし、すべてのURLをhttps://へ301で転送する</td></tr>
<tr><td>7. 証明書の期限と自動更新</td><td>鍵アイコンから証明書を開き、期限まで30日以上あり、名前にwwwあり、なしの両方が入り、自動更新が動いていれば合格</td><td>期限が切れた時点でブラウザが全画面の警告を出し、訪問者が先へ進めない</td><td>自動更新にし、期限の監視を別に置く。Let&#8217;s Encryptの期限通知メールは2025年6月4日に終了した</td></tr>
<tr><td>8. 古い通信方式の停止</td><td>診断ツールで、TLS 1.2と1.3にだけ応じ、TLS 1.0、1.1、SSL 3.0を拒めば合格</td><td>RFC 8996(TLS 1.0、1.1)とRFC 7568(SSL 3.0)が使用を禁じた方式での接続を許してしまう</td><td>Apacheは既定の <code>all -SSLv3</code> のままにせず、<code>SSLProtocol -all +TLSv1.2 +TLSv1.3</code> にする。共用サーバーは事業者の設定を確かめる</td></tr>
<tr><td>9. <a href="https://slt-inc.jp/glossary/hsts/">HSTS</a></td><td>curl -I https://example.com/ の応答を見る。Strict-Transport-Security の max-age が31536000(1年)以上なら合格</td><td>httpのリンクや初回の接続から、暗号化されない通信へ誘導される余地が残る</td><td>max-age=300 など短い値で始め、問題がなければ1年以上へ延ばす</td></tr>
<tr><td>10. <a href="https://slt-inc.jp/glossary/mixed-content/">混在コンテンツ</a></td><td>主要ページを開き、開発者ツール(F12)のConsoleに Mixed Content の警告が出なければ合格</td><td>httpで読むスクリプトやCSSはブラウザに止められ、表示や機能が崩れる</td><td>本文、テーマ、プラグインの参照をhttps://に直す。補助にCSPの upgrade-insecure-requests を使う</td></tr>
</tbody></table></div>
<div class="slt-callout is-note"><p class="slt-callout-title">証明書の有効期間は短くなっている</p><p>CA/Browser Forumの<a href="https://cabforum.org/working-groups/server/baseline-requirements/requirements/">基準(Baseline Requirements)</a>では、2026年3月15日以降に発行する証明書の最大有効期間が200日です。2027年3月15日からは100日、2029年3月15日からは47日に縮みます。更新の回数が増えるほど手作業は漏れやすいため、項目7は自動更新を前提にします。</p></div>

<h3>HTTPヘッダーとCookie(項目11〜14)</h3>
<p>セキュリティヘッダーは、ブラウザに備わった防御を有効にする設定です。確認はどれも、curl -I の応答を1回見れば済みます。書き方の例は、<a href="https://slt-inc.jp/article/security-headers-setup/">セキュリティヘッダーの設定方法</a>にまとめています。</p>
<div class="slt-table-wrap"><table class="slt-table"><thead><tr><th>項目</th><th>確認方法と合格の目安</th><th>放置の危険</th><th>直し方</th></tr></thead><tbody>
<tr><td>11. <a href="https://slt-inc.jp/glossary/csp/">CSP</a></td><td>応答の Content-Security-Policy を見る。<code>frame-ancestors</code>、<code>object-src 'none'</code>、<code>base-uri 'self'</code> があれば第1段階は合格</td><td>XSSが起きたとき、外部スクリプトの読み込みや情報の送信を止められない</td><td>Content-Security-Policy-Report-Only で違反を集め、表示が崩れないと確かめてから適用する</td></tr>
<tr><td>12. 枠への埋め込みの禁止</td><td>X-Frame-Options: SAMEORIGIN(またはDENY)か、CSPの <code>frame-ancestors 'self'</code> があれば合格</td><td>透明に重ねたページでボタンを押させる<a href="https://slt-inc.jp/glossary/clickjacking/">クリックジャッキング</a>を受ける</td><td>応答ヘッダーを1行足す。meta要素に書いても効かない</td></tr>
<tr><td>13. 補助の3つのヘッダー</td><td>X-Content-Type-Options: nosniff がある。Referrer-Policy が unsafe-url でなく、Permissions-Policy で使わない機能を止めていれば合格</td><td>ファイルの種類の誤判定、URLに含まれる情報の外部送信、埋め込みによる不要な機能の利用を許す</td><td>1行ずつ足す。Referrer-Policyは未指定でも、仕様の既定値 strict-origin-when-cross-origin で動く</td></tr>
<tr><td>14. Cookieの属性</td><td>ログイン後、開発者ツールのApplicationタブでCookieを開く。ログイン状態を保つCookieに Secure、HttpOnly、SameSite=Lax以上があれば合格</td><td>XSSでCookieを盗まれ、なりすまされる。他サイトを経由した意図しない操作も受けやすい</td><td>CMSやアプリの設定で付ける。PHPなら session.cookie_secure など3つの設定を有効にする(既定はどれも無効)</td></tr>
</tbody></table></div>
<p>APIを公開しているサイトは、Access-Control-Allow-Origin が * や、受け取ったオリジンをそのまま返す設定になっていないかも確かめます。</p>

<h3>DNSとメール認証(項目15〜17)</h3>
<p>自社ドメインを名乗るなりすましメールは、サイトに触れずに顧客や取引先を狙います。IPAの<a href="https://www.ipa.go.jp/security/10threats/10threats2026.html">情報セキュリティ10大脅威2026</a>でも、ビジネスメール詐欺が組織向けの10位に入りました。メール認証は、受け取る側に本物かどうかを判断させる仕組みです。</p>
<div class="slt-table-wrap"><table class="slt-table"><thead><tr><th>項目</th><th>確認方法と合格の目安</th><th>放置の危険</th><th>直し方</th></tr></thead><tbody>
<tr><td>15. SPFとDKIM</td><td>dig TXT 自社ドメイン で v=spf1 の行がちょうど1つ。自社から送ったメールのヘッダー(Authentication-Results)に spf=pass と dkim=pass があれば合格</td><td>なりすましを受信側が見分けにくい。Gmailは認証のないメールを、迷惑メールに分類したり拒否したりすることがある</td><td>送信に使う全サービスをSPFにまとめ、DNSの参照を10回以内に収める。各サービスでDKIMの署名を有効にする</td></tr>
<tr><td>16. DMARC</td><td>dig TXT _dmarc.自社ドメイン で v=DMARC1 があり、rua でレポートを受け取っていれば第1段階は合格</td><td>なりすましメールの扱いが受信側任せになり、悪用されても気づけない</td><td>p=none とレポートの受け取りから始め、正規のメールが合格すると確かめてから p=quarantine、p=reject へ進む</td></tr>
<tr><td>17. 参照先のないCNAME</td><td>DNSの管理画面でCNAMEを一覧にし、参照先のサービスをすべて今も契約していれば合格</td><td>解約したサービス側で第三者が同じ名前を取り、自社のサブドメインに偽のページを出す</td><td>不要なレコードを消す。サービスを解約するときは、先にDNSのレコードを消す</td></tr>
</tbody></table></div>
<pre class="slt-code"><code># Mac、Linux
dig TXT example.com +short
dig TXT _dmarc.example.com +short

# Windows(コマンドプロンプト、PowerShell)
nslookup -type=TXT example.com
nslookup -type=TXT _dmarc.example.com

例: 合格の形(SPFは1行だけ、DMARCはレポートの宛先あり)
"v=spf1 include:_spf.example.net ~all"
"v=DMARC1; p=none; rua=mailto:dmarc-report@example.com"</code></pre>
<p>Gmailの<a href="https://support.google.com/a/answer/81126?hl=ja">送信者のガイドライン</a>は、すべての送信者にSPFかDKIMを求め、1日5,000件以上を送る送信者にはSPF、DKIM、DMARCのすべてを求めています。コマンドを使わない場合は、ドメイン名を入れるだけの<a href="https://slt-inc.jp/service/dmarc-spf-dkim-diagnostic-tools/">DMARC、SPF、DKIMの無料診断ツール</a>でも設定の状況を確かめられます。</p>
<div class="slt-callout is-note"><p class="slt-callout-title">DMARCの仕様は2026年5月に改訂</p><p>DMARCの仕様は、2026年5月にRFC 9989として改訂され、RFC 7489を置き換えました。p=none、quarantine、reject の3段階の考え方は変わらず、項目16の進め方もそのまま使えます。</p></div>

<h2>管理画面と契約で確かめる13項目(更新、ログイン、運用)</h2>
<p>管理画面と契約で確かめる13項目は、外からは見えませんが、乗っ取りを防げるか、被害から戻れるかを決めます。CMS、サーバー、ドメインの管理画面と、制作会社やサーバー事業者との契約書を手元に置いて確かめます。</p>

<h3>ソフトウェアの更新(項目18〜21)</h3>
<p>公表された脆弱性には、<a href="https://slt-inc.jp/glossary/cve/">CVE</a>という共通の番号が付きます。攻撃者はその情報を使い、対策していないシステムを狙います。10大脅威2026でも、『システムの脆弱性を悪用した攻撃』が組織向けの4位でした。</p>
<p>WordPressでの具体的な手順は、<a href="https://slt-inc.jp/article/wordpress-vulnerability-check/">WordPressの脆弱性を確認する方法</a>で扱っています。</p>
<div class="slt-table-wrap"><table class="slt-table"><thead><tr><th>項目</th><th>確認方法と合格の目安</th><th>放置の危険</th><th>直し方</th></tr></thead><tbody>
<tr><td>18. CMS本体</td><td>管理画面の更新画面で、未適用の更新がなく、自動更新が有効なら合格</td><td>修正済みの脆弱性が自社サイトにだけ残り、公表された情報をもとに攻撃される</td><td>バックアップ(項目26)を確かめてから更新する。WordPressは5.6以降に新しく入れたサイトなら、本体の自動更新が既定で有効</td></tr>
<tr><td>19. プラグインとテーマ</td><td>一覧で未適用の更新がなく、停止中のものが残っておらず、配布元で更新が長く止まったものがなければ合格</td><td>公表された脆弱性を狙われる。停止しただけのものはファイルが残り、更新も忘れられやすい</td><td>更新し、使わないものは削除する。配布や保守が止まったものは代わりを探す</td></tr>
<tr><td>20. PHPとWebサーバー</td><td>サーバーの管理画面か、WordPressの『サイトヘルス』の情報タブで版を見る。<a href="https://www.php.net/supported-versions.php">php.netのサポート期間</a>内なら合格</td><td>サポートが切れた版には、脆弱性の修正が出ない</td><td>検証環境で動作を確かめてから切り替える。PHP 8.2のセキュリティサポートは2026年12月31日まで</td></tr>
<tr><td>21. JSライブラリ</td><td>開発者ツールのConsoleで jQuery.fn.jquery と打ち、3.5.0以上か、未定義(jQueryを使っていない)なら合格</td><td>既知のXSSが残る。3.5.0未満にあるCVE-2020-11023は、2025年1月に米国CISAの悪用確認済みの一覧に載った</td><td>テーマやプラグインの更新で置き換える。CDNから読む場合は integrity 属性(SRI)を付ける</td></tr>
</tbody></table></div>

<h3>ログインとアカウント(項目22〜25)</h3>
<p>管理画面のパスワードは、ほかで漏れたパスワードの一覧を使って機械的に試されます。20ヶ条も、不正ログインの対策、不要なアカウント、推測されやすいパスワードを、それぞれ独立した条項にしています。CMSだけでなく、サーバー、ドメイン、DNS、メール配信の管理画面も同じ扱いです。</p>
<div class="slt-table-wrap"><table class="slt-table"><thead><tr><th>項目</th><th>確認方法と合格の目安</th><th>放置の危険</th><th>直し方</th></tr></thead><tbody>
<tr><td>22. パスワード</td><td>管理画面ごとに別のパスワードで、多要素認証のない画面は15文字以上なら合格</td><td>他社のサービスから漏れたパスワードで、そのまま入られる</td><td>パスワード管理ツールで生成する。米国の<a href="https://pages.nist.gov/800-63-4/sp800-63b.html">NISTの指針(SP 800-63B-4)</a>も、パスワードだけで守る場合は15文字以上を求める</td></tr>
<tr><td>23. 多要素認証</td><td>CMSの管理者、サーバー、ドメインの登録サービス、DNS、メール配信のすべてで、2段階認証が有効なら合格</td><td>パスワードが漏れた時点で乗っ取られる。ドメインの管理画面を取られると、サイトとメールを丸ごと奪われる</td><td>認証アプリかセキュリティキーで有効にし、復旧コードを社内の決まった場所に保管する</td></tr>
<tr><td>24. ログイン画面の保護</td><td>社外の回線で /wp-admin/ が開かないか、試行回数の制限が効いている。/wp-json/wp/v2/users にログインIDが出なければ合格</td><td>ログインIDを知られたうえで、総当たりや使い回しのパスワードを試され続ける</td><td>接続元のIP制限かBasic認証をかけ、ログインの試行回数を制限する。使わないなら xmlrpc.php も止める</td></tr>
<tr><td>25. アカウントと権限</td><td>CMS、サーバー、FTP、DNSのアカウントを書き出し、退職者、制作会社の作業用、テスト用が残っていなければ合格</td><td>使われていないアカウントが、気づかれない入口として残る</td><td>不要なものを消し、管理者権限は必要な人だけにする。FTPは止め、暗号化されるSFTPに切り替える</td></tr>
</tbody></table></div>

<h3>バックアップ、監視、体制(項目26〜30)</h3>
<p>被害をゼロにはできないため、気づく仕組みと戻す手段を先に用意します。IPAが2026年10月9日に出した<a href="https://www.ipa.go.jp/security/security-alert/2026/alert20261009.html">不正アクセスによる漏えい等の事案を踏まえた注意喚起</a>も、ログの保持期間、保有データ、外部サービスの見直しを求めています。</p>
<div class="slt-table-wrap"><table class="slt-table"><thead><tr><th>項目</th><th>確認方法と合格の目安</th><th>放置の危険</th><th>直し方</th></tr></thead><tbody>
<tr><td>26. バックアップと復元</td><td>保存先、世代数、最後に復元を試した日を見る。サーバーとは別の場所に複数の世代があり、復元を試したことがあれば合格</td><td>改ざん、ランサム攻撃、誤操作のあとで、元の状態に戻せない</td><td>自動で取得し、サーバーの外にも世代を残す。年1回はテスト環境で復元を試す</td></tr>
<tr><td>27. ログと警告の確認</td><td>アクセスログとエラーログの保存期間を確かめ、月1回は見ている。Search Consoleの『セキュリティの問題』に緑のチェックが出ていれば合格</td><td>改ざんや不正ログインに気づけず、原因と影響の範囲も説明できない</td><td>保存期間が短ければ、定期的に取り出して保管する。Search Consoleに登録して通知を受け取る</td></tr>
<tr><td>28. <a href="https://slt-inc.jp/glossary/waf/">WAF</a></td><td>サーバーやCDNの管理画面でWAFが有効で、フォームの送信や管理画面の保存が止められていなければ合格</td><td>更新が遅れたあいだに届く既知の攻撃を、入口で止められない</td><td>有効にしてから主要な操作を試す。誤って止まる操作は、該当する規則だけを外す</td></tr>
<tr><td>29. 保有する個人情報</td><td>フォームの送信履歴、会員データ、書き出したCSVの置き場所と件数を確かめ、保存期間が決まっていれば合格</td><td>侵入されたとき、ためていた分だけ漏れる量が増え、報告と通知の対象も広がる</td><td>期限を過ぎたものを消す。フォームの内容をサーバーに残す必要がなければ、保存を止める</td></tr>
<tr><td>30. 責任範囲と連絡先</td><td>ドメイン、サーバー、証明書、CMSの保守を、誰がいつまで担うかを1枚の表に書ければ合格</td><td>全員が『誰かがやっている』と思い込み、更新も監視も止まる。事故の連絡先も分からない</td><td>契約に保守の範囲を書く。外部からの連絡窓口は /.well-known/security.txt で示す(RFC 9116)</td></tr>
</tbody></table></div>

<h2>直す順番は、被害の大きさ、見つかりやすさ、手間の3つで決める</h2>
<p>30項目は、被害の大きさ、見つかりやすさ、直す手間と副作用の3つの物差しで、3段階に分けて直します。被害が大きく機械的に見つかるものから先に直し、表示を壊すおそれのあるものは試しながら進めます。</p>
<figure class="slt-figure"><svg role="img" viewBox="0 0 800 420"><title>3つの物差しで30項目を3段階に分ける</title><desc>左の3つの物差し(被害の大きさ、見つかりやすさ、直す手間と副作用)で評価し、右の3段階(すぐ、今月中、3か月以内)に項目番号を振り分ける流れを示す図</desc><defs><marker id="slt-arrow-prio-24854" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto"><path d="M0,0 L10,5 L0,10 z" fill="#10265A"/></marker></defs><rect x="20" y="20" width="300" height="380" rx="12" fill="#EEF2F9" stroke="#10265A" stroke-width="3"/><text x="170" y="66" font-size="26" font-weight="bold" text-anchor="middle" fill="#10265A">3つの物差し</text><text x="44" y="122" font-size="22" font-weight="bold" fill="#10265A">1 被害の大きさ</text><text x="44" y="154" font-size="22" fill="#10265A">漏えい、改ざん、停止</text><text x="44" y="222" font-size="22" font-weight="bold" fill="#10265A">2 見つかりやすさ</text><text x="44" y="254" font-size="22" fill="#10265A">決まったURL、公表情報</text><text x="44" y="322" font-size="22" font-weight="bold" fill="#10265A">3 直す手間と副作用</text><text x="44" y="354" font-size="22" fill="#10265A">数行で済むか、試すか</text><line x1="326" y1="210" x2="364" y2="84" stroke="#10265A" stroke-width="3" marker-end="url(#slt-arrow-prio-24854)"/><line x1="326" y1="210" x2="364" y2="210" stroke="#10265A" stroke-width="3" marker-end="url(#slt-arrow-prio-24854)"/><line x1="326" y1="210" x2="364" y2="336" stroke="#10265A" stroke-width="3" marker-end="url(#slt-arrow-prio-24854)"/><rect x="372" y="20" width="408" height="120" rx="12" fill="#FFFFFF" stroke="#D00A0A" stroke-width="4"/><text x="396" y="66" font-size="24" font-weight="bold" fill="#10265A">すぐ(当日中)8項目</text><text x="396" y="110" font-size="22" fill="#10265A">1、2、7、18、19、22、23、26</text><rect x="372" y="150" width="408" height="120" rx="12" fill="#FFFFFF" stroke="#10265A" stroke-width="3"/><text x="396" y="196" font-size="24" font-weight="bold" fill="#10265A">今月中 13項目</text><text x="396" y="240" font-size="22" fill="#10265A">3〜6、12〜17、20、24、25</text><rect x="372" y="280" width="408" height="120" rx="12" fill="#EEF2F9" stroke="#4A5C82" stroke-width="3"/><text x="396" y="326" font-size="24" font-weight="bold" fill="#10265A">3か月以内 9項目</text><text x="396" y="370" font-size="22" fill="#10265A">8〜11、21、27〜30</text></svg><figcaption>図2 3つの物差しで30項目を3段階に分ける。すぐ直すのは8項目、今月中は13項目、3か月以内に計画して進めるのは9項目</figcaption></figure>
<div class="slt-table-wrap"><table class="slt-table"><thead><tr><th>段階</th><th>対象の項目</th><th>この段階にした根拠</th></tr></thead><tbody>
<tr><td>すぐ(当日中)</td><td>1、2、7、18、19、22、23、26</td><td>決まったURL、漏れたパスワードの一覧、公表された脆弱性で機械的に見つかり、被害も大きい。7は期限まで30日未満の場合。26は、作業で不具合が出たときの戻り道として先に確かめる</td></tr>
<tr><td>今月中</td><td>3〜6、12〜17、20、24、25</td><td>被害は大きいが、悪用には条件が要る。設定の数行や不要物の削除で直るものが多い。20はサポート切れなら移行の計画を立てる</td></tr>
<tr><td>3か月以内</td><td>8〜11、21、27〜30</td><td>表示や機能を壊すおそれがあり、試しながら進める。サーバー事業者や制作会社との調整、社内の決めごとが要る</td></tr>
</tbody></table></div>
<div class="slt-callout is-warn"><p class="slt-callout-title">HSTSは取り消しにくい</p><p>HSTSの有効期間を長くした後でHTTPSをやめると、その期間中、訪問済みのブラウザはサイトを開けなくなります。項目9を3か月以内の段階に置いたのは、短い期間から試して延ばすためです。</p></div>

<h2>点検の計画: 今日15分、毎月30分、変更時と年1回の見直し</h2>
<p>点検は一度で終わらせず、頻度を決めて回します。目安は、初回15分、毎月30分、変更したときと公開前に10分から20分、四半期に1時間、年1回に半日です。</p>
<div class="slt-table-wrap"><table class="slt-table"><thead><tr><th>タイミング</th><th>所要時間の目安</th><th>点検する項目</th><th>使う道具</th></tr></thead><tbody>
<tr><td>今日(初回)</td><td>15分</td><td>1、7、18、19、22、23、26と、外側の一括診断</td><td>ブラウザ、管理画面、無料ツール</td></tr>
<tr><td>毎月1回</td><td>30分</td><td>1〜17の一括診断、18〜21、27</td><td>無料ツール、管理画面、Search Console</td></tr>
<tr><td>変更したとき、公開前</td><td>10〜20分</td><td>1〜6、10〜14と、下のチェックリスト</td><td>curl、開発者ツール</td></tr>
<tr><td>四半期に1回</td><td>1時間</td><td>4、17、24、25、28、29</td><td>DNSの管理画面、アカウントの一覧</td></tr>
<tr><td>年に1回</td><td>半日</td><td>20、26の復元テスト、30と、専門家の診断の要否</td><td>契約書、テスト環境</td></tr>
</tbody></table></div>
<p>公開前と変更したときは、次の8点を確かめてから切り替えます。作業の途中で作ったファイルやアカウントは、消し忘れやすいためです。</p>
<ul class="slt-check">
<li>作業で作った .zip、.sql、.bak を消した(項目2)</li>
<li>テスト用のアカウントと、制作会社の一時的なアカウントを消した(項目25)</li>
<li>本番のデバッグ表示を切った。WordPressは WP_DEBUG、PHPは display_errors(項目5)</li>
<li>テスト環境は、Basic認証などで社外から見えない(項目4)</li>
<li>全ページがhttpsで開き、Consoleに混在コンテンツの警告がない(項目6、10)</li>
<li>curl -I で、ヘッダーが意図どおりに返る(項目11〜13)</li>
<li>フォームを送信し、WAFに止められず、確認メールが届いた(項目28)</li>
<li>新しく作ったサブドメインに、使い終えたら消す担当を決めた(項目17)</li>
</ul>

<h2>問題が見つかったときの初動: 記録、停止、鍵の作り直し、報告</h2>
<p>公開ファイルや改ざんが見つかったら、記録、停止、作り直し、調査、報告の判断、再発防止の順で動きます。先にファイルを消すと、調査と報告に要る証拠まで失うためです。</p>
<ol class="slt-steps">
<li><strong>記録を残す</strong>見つけた日時、URL、画面のスクリーンショットを残し、サーバーのログを保全します。</li>
<li><strong>公開を止める</strong>問題のファイルを公開フォルダから外すか、サーバー設定で拒否します。改ざんであれば、メンテナンス表示に切り替えます。</li>
<li><strong>鍵とパスワードを作り直す</strong>読まれたおそれのある .env のパスワード、APIキー、管理者のパスワードを変えます。ファイルを消しても、写しを取られた鍵は使えるままです。</li>
<li><strong>ログで範囲を調べる</strong>アクセスログで、そのURLに外部から届いたリクエストの有無と日時を確かめます。</li>
<li><strong>報告と通知の要否を判断する</strong>個人データが漏れたおそれがあれば、個人情報保護委員会への報告と本人への通知が必要かを判断します。</li>
<li><strong>再発を防ぐ</strong>原因になった手順、権限、更新の漏れを直し、点検の計画に組み込みます。</li>
</ol>
<div class="slt-callout is-warn"><p class="slt-callout-title">報告には期限がある</p><p><a href="https://www.ppc.go.jp/personalinfo/legal/leakAction/">個人情報保護委員会の案内</a>では、速報は発覚から3〜5日以内、確報は30日以内です。不正アクセスなど不正の目的によるおそれがある場合、確報は60日以内で、漏れた人数が少なくても報告の対象になります。</p></div>
<p>自社だけで判断が難しい場合は、制作や保守を担う会社に早めに連絡します。診断結果の読み方や直す順番の相談は、<a href="https://slt-inc.jp/inquiry/">エスライン・テクノロジーズのお問い合わせ窓口</a>でも受け付けています。</p>

<h2>IPAの20ヶ条と、この点検表の対応</h2>
<p>この30項目は、IPAの20ヶ条の観点を、小規模なサイトで確かめられる形に置き換えたものです。20ヶ条は2005年に掲載が始まり、2015年の全面改訂を経て、2019年3月6日に最終更新されています。</p>
<div class="slt-table-wrap"><table class="slt-table"><thead><tr><th>20ヶ条の分類</th><th>主な観点</th><th>この記事の項目</th></tr></thead><tbody>
<tr><td>ウェブアプリケーション(1〜8条)</td><td>公開すべきでないファイル、不要なページ、ソフトウェアの更新、エラーメッセージ、ログ、通信の暗号化、不正ログイン</td><td>1〜10、18、19、21〜24、27</td></tr>
<tr><td>ウェブサーバ(9〜14条)</td><td>OSやミドルウェアの更新、不要なサービスとアカウント、推測されやすいパスワード、アクセス制御、ログ</td><td>3、20、22、25、27</td></tr>
<tr><td>ネットワーク(15〜18条)</td><td>不要な通信の遮断、ファイアウォール、不正な通信の検知と遮断、機器のログ</td><td>28、30(共用サーバーでは事業者との分担を確かめる)</td></tr>
<tr><td>その他(19、20条)</td><td>クラウドなどを使うときの責任範囲、定期的な検査と監査</td><td>30、年1回の点検、専門家の診断</td></tr>
</tbody></table></div>
<p>20ヶ条の3条目にある『安全なウェブサイトの作り方』の脆弱性対策は、入力フォームなどの作りを調べる必要があり、この点検表には含めていません。ただし、項目11〜14のヘッダーとCookieは、その被害を和らげる設定にあたります。</p>
<p>反対に、メール認証(項目15、16)、参照先のないCNAME(項目17)、証明書の自動更新(項目7)は、20ヶ条にない観点として加えました。メールの送信者への要件や、証明書の有効期間の短縮といった、最終更新後の変化に対応するためです。</p>

<h2>無料ツール、手作業、専門家の診断の使い分け</h2>
<p>外から見える項目は無料ツールでまとめて確かめ、管理画面の項目は自分の目で確かめます。入力フォームや会員機能の作りは、専門家の脆弱性診断が担う領域です。</p>
<div class="slt-table-wrap"><table class="slt-table"><thead><tr><th>方法</th><th>分かること</th><th>分からないこと</th><th>向く場面</th></tr></thead><tbody>
<tr><td>無料ツール</td><td>項目1〜17の多くと、外から見えるソフトウェアの版</td><td>管理画面の中、アプリの作り</td><td>毎月の点検、設定を変えた後</td></tr>
<tr><td>curlと開発者ツール</td><td>個々のヘッダー、転送、Cookie、混在コンテンツ</td><td>版と既知の脆弱性の照合</td><td>設定を直した直後の確かめ</td></tr>
<tr><td>管理画面と契約書</td><td>項目18〜30</td><td>外からの見え方</td><td>毎月と年1回の見直し</td></tr>
<tr><td>専門家の脆弱性診断</td><td>SQLインジェクションやXSSなど、作りの問題</td><td>日々の運用の抜け</td><td>公開前、大きな改修の後、個人情報や決済を扱うとき</td></tr>
</tbody></table></div>
<p>手順5で使った無料ツール『<a href="https://slt-inc.jp/service/security-checker/">Security Checker X</a>』は、公開ページの取得、DNSの照会、TLSの接続確認だけで診断し、ログインの試行や攻撃用データの送信はしません。各指摘には『確認済み』『推定』『可能性』の確度が付くため、事実と推測を分けて読めます。診断できるのは、自社か管理権限のあるサイトだけです。</p>
<p>専門家に依頼するかどうかの判断は、<a href="https://slt-inc.jp/article/vulnerability-assessment-vs-simple-check/">簡易チェックと脆弱性診断の違い</a>で整理しています。</p>

<h2>よくある質問</h2>
<div class="slt-faq"><h3>小さな会社のサイトでも、セキュリティチェックは必要ですか?</h3><p>必要です。10大脅威2026では『サプライチェーンや委託先を狙った攻撃』が組織向けの2位で、取引のある大きな組織へ近づく入口として、小さな組織が使われる場合があります。公開ファイルや古いプラグインは、規模に関係なく決まった方法で探せます。</p></div>
<div class="slt-faq"><h3>レンタルサーバーを使っていれば、点検は事業者に任せてよいですか?</h3><p>任せきりにはできません。20ヶ条の19条目は、サービス事業者の作業範囲を把握したうえで、足りない対策を自組織で行うよう検討を促しています。CMSの更新、管理画面のパスワード、公開フォルダに置いたファイルは利用者が操作する部分で、分担の細部は契約によって変わります。</p></div>
<div class="slt-faq"><h3>無料診断の点数が低いと、すぐに危険ということですか?</h3><p>点数だけでは決まりません。先に、重大度が『緊急』『高』の指摘と、その確度を見ます。版の表示などから推した指摘は、管理画面で事実を確かめてから直します。</p></div>
<div class="slt-faq"><h3>管理画面のパスワードは、定期的に変えたほうがよいですか?</h3><p>定期的な変更より、使い回しをなくすことと多要素認証を優先します。NISTの指針(SP 800-63B-4、2025年8月確定)は、利用者に定期的な変更を求めないよう定め、漏えいの証拠がある場合に変更させるとしています。</p></div>
<div class="slt-faq"><h3>取引先のセキュリティチェックシートに、この点検表で答えられますか?</h3><p>Webサイトに関する設問には、根拠として使えます。チェックシートが社内の規程や教育まで問う場合、Webサイトの点検はその一部にあたります。点検した日付、項目、結果を残しておくと、回答の裏付けになります。</p></div>
<div class="slt-faq"><h3>取引先など、他社のサイトをこの点検表で調べてもよいですか?</h3><p>管理者の許可がないサイトは調べないでください。公開ページを読むだけでも相手のログに残り、攻撃の下調べと区別がつきません。取引先の状態を知りたい場合は、点検表を渡して先方に確かめてもらいます。</p></div>
<div class="slt-faq"><h3>点検の結果は、何を記録しておけばよいですか?</h3><p>日付、項目番号、結果、対応、担当者の5つを1行で残します。前回との差を見れば、更新が止まった時期や設定が変わった時期をたどれます。診断ツールの結果画面は保存期間が限られる場合があるため、必要な部分は社内の記録に写します。</p></div>

<h2>項目ごとに詳しく確かめる関連記事</h2>
<div class="slt-related">
<a class="slt-related-item" href="https://slt-inc.jp/article/git-env-file-exposure/"><span class="slt-related-thumb"><img src="https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24875-git-env-exposure-300x200.png" srcset="https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24875-git-env-exposure-300x200.png 300w, https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24875-git-env-exposure-768x512.png 768w" sizes="auto, (max-width: 560px) 78vw, 300px" width="300" height="200" alt="" loading="lazy" decoding="async"></span><span class="slt-related-kind">関連記事</span><span class="slt-related-title">.gitや.envが公開されていないか確認する方法と、見つかった時の対処</span></a>
<a class="slt-related-item" href="https://slt-inc.jp/article/ssl-tls-certificate-check/"><span class="slt-related-thumb"><img src="https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24877-ssl-tls-check-300x200.png" srcset="https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24877-ssl-tls-check-300x200.png 300w, https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24877-ssl-tls-check-768x512.png 768w" sizes="auto, (max-width: 560px) 78vw, 300px" width="300" height="200" alt="" loading="lazy" decoding="async"></span><span class="slt-related-kind">関連記事</span><span class="slt-related-title">SSL/TLS証明書のチェック方法</span></a>
<a class="slt-related-item" href="https://slt-inc.jp/article/security-headers-setup/"><span class="slt-related-thumb"><img src="https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24853-security-headers-300x200.png" srcset="https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24853-security-headers-300x200.png 300w, https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24853-security-headers-768x512.png 768w" sizes="auto, (max-width: 560px) 78vw, 300px" width="300" height="200" alt="" loading="lazy" decoding="async"></span><span class="slt-related-kind">関連記事</span><span class="slt-related-title">セキュリティヘッダーの設定方法</span></a>
<a class="slt-related-item" href="https://slt-inc.jp/article/wordpress-vulnerability-check/"><span class="slt-related-thumb"><img src="https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24880-wordpress-vulnerability-300x200.png" srcset="https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24880-wordpress-vulnerability-300x200.png 300w, https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24880-wordpress-vulnerability-768x512.png 768w" sizes="auto, (max-width: 560px) 78vw, 300px" width="300" height="200" alt="" loading="lazy" decoding="async"></span><span class="slt-related-kind">関連記事</span><span class="slt-related-title">WordPressの脆弱性を確認する方法</span></a>
<a class="slt-related-item" href="https://slt-inc.jp/article/vulnerability-assessment-vs-simple-check/"><span class="slt-related-thumb"><img src="https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24878-assessment-difference-300x200.png" srcset="https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24878-assessment-difference-300x200.png 300w, https://slt-inc.jp/wp-content/uploads/2026/10/slt-thumb-24878-assessment-difference-768x512.png 768w" sizes="auto, (max-width: 560px) 78vw, 300px" width="300" height="200" alt="" loading="lazy" decoding="async"></span><span class="slt-related-kind">関連記事</span><span class="slt-related-title">簡易チェックと脆弱性診断の違い</span></a>
</div>

<div class="slt-cta"><p class="slt-cta-title">外から見える項目を、無料でまとめて確かめる</p><p>URLを入れるだけで、証明書、ヘッダー、公開ファイル、ソフトウェアの版、DNSとメール認証を診断します。登録は要らず、通常30秒から90秒で結果が出ます。</p><a class="slt-cta-btn" href="https://slt-inc.jp/service/security-checker/">無料でWebサイトをチェックする</a></div>
</div>
<script type="application/ld+json">{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "小さな会社のサイトでも、セキュリティチェックは必要ですか?", "acceptedAnswer": {"@type": "Answer", "text": "必要です。10大脅威2026では『サプライチェーンや委託先を狙った攻撃』が組織向けの2位で、取引のある大きな組織へ近づく入口として、小さな組織が使われる場合があります。公開ファイルや古いプラグインは、規模に関係なく決まった方法で探せます。"}}, {"@type": "Question", "name": "レンタルサーバーを使っていれば、点検は事業者に任せてよいですか?", "acceptedAnswer": {"@type": "Answer", "text": "任せきりにはできません。20ヶ条の19条目は、サービス事業者の作業範囲を把握したうえで、足りない対策を自組織で行うよう検討を促しています。CMSの更新、管理画面のパスワード、公開フォルダに置いたファイルは利用者が操作する部分で、分担の細部は契約によって変わります。"}}, {"@type": "Question", "name": "無料診断の点数が低いと、すぐに危険ということですか?", "acceptedAnswer": {"@type": "Answer", "text": "点数だけでは決まりません。先に、重大度が『緊急』『高』の指摘と、その確度を見ます。版の表示などから推した指摘は、管理画面で事実を確かめてから直します。"}}, {"@type": "Question", "name": "管理画面のパスワードは、定期的に変えたほうがよいですか?", "acceptedAnswer": {"@type": "Answer", "text": "定期的な変更より、使い回しをなくすことと多要素認証を優先します。NISTの指針(SP 800-63B-4、2025年8月確定)は、利用者に定期的な変更を求めないよう定め、漏えいの証拠がある場合に変更させるとしています。"}}, {"@type": "Question", "name": "取引先のセキュリティチェックシートに、この点検表で答えられますか?", "acceptedAnswer": {"@type": "Answer", "text": "Webサイトに関する設問には、根拠として使えます。チェックシートが社内の規程や教育まで問う場合、Webサイトの点検はその一部にあたります。点検した日付、項目、結果を残しておくと、回答の裏付けになります。"}}, {"@type": "Question", "name": "取引先など、他社のサイトをこの点検表で調べてもよいですか?", "acceptedAnswer": {"@type": "Answer", "text": "管理者の許可がないサイトは調べないでください。公開ページを読むだけでも相手のログに残り、攻撃の下調べと区別がつきません。取引先の状態を知りたい場合は、点検表を渡して先方に確かめてもらいます。"}}, {"@type": "Question", "name": "点検の結果は、何を記録しておけばよいですか?", "acceptedAnswer": {"@type": "Answer", "text": "日付、項目番号、結果、対応、担当者の5つを1行で残します。前回との差を見れば、更新が止まった時期や設定が変わった時期をたどれます。診断ツールの結果画面は保存期間が限られる場合があるため、必要な部分は社内の記録に写します。"}}]}</script><p>The post <a href="https://slt-inc.jp/article/website-security-check-items/">Webサイトのセキュリティチェック項目30選｜確認方法つき一覧表</a> first appeared on <a href="https://slt-inc.jp">総合デジタルマーケティング企業 エスライン・テクノロジーズ</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
