<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://www.seirios.org/seirios/dokuwiki/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>ほほほのほ - networkapp</title>
        <description></description>
        <link>http://www.seirios.org/seirios/dokuwiki/</link>
        <lastBuildDate>Fri, 01 May 2026 02:15:57 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>http://www.seirios.org/seirios/dokuwiki/lib/exe/fetch.php?media=wiki:dokuwiki.svg</url>
            <title>ほほほのほ</title>
            <link>http://www.seirios.org/seirios/dokuwiki/</link>
        </image>
        <item>
            <title>acme-client</title>
            <link>http://www.seirios.org/seirios/dokuwiki/doku.php?id=networkapp:acme-client</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;acme-client&quot;&gt;acme-client&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://letsencrypt.org&quot; class=&quot;urlextern&quot; title=&quot;https://letsencrypt.org&quot;&gt;Let&amp;#039;s Encrypt(以下LE)&lt;/a&gt;は、無料でDomain Validation(以下DV)証明書を発行してくれる機関である。
このLEは、申請から証明書発行までを人手を介さずシステムだけで処理してくれる、自動化に非常に向いている仕組みを提供している。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;acme-client&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;acme-client&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-356&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;let_s_encrypt&quot;&gt;Let&amp;#039;s Encrypt&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
以前、&lt;a href=&quot;http://www.seirios.org/seirios/dokuwiki/doku.php?id=tweet:2017:0203_01&quot; class=&quot;wikilink1&quot; title=&quot;tweet:2017:0203_01&quot; data-wiki-id=&quot;tweet:2017:0203_01&quot;&gt;Let&amp;#039;s Encryptを少し調べてみた&lt;/a&gt;で調査した内容をまとめる。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Let&amp;#039;s Encrypt&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;let_s_encrypt&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;357-493&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;let_s_encryptとは&quot;&gt;Let&amp;#039;s Encryptとは？&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
LEは、Internet Security Research Group (ISRG) が運営する、&lt;strong&gt;無料&lt;/strong&gt;で利用でき、&lt;strong&gt;自動化&lt;/strong&gt;されていて、&lt;strong&gt;オープン&lt;/strong&gt;な認証局。
&lt;/p&gt;

&lt;p&gt;
Let&amp;#039;s Encryptの基本方針は
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; 無料&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; ドメインを保持する者が無料で信頼された証明書を取得可能&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; 運用の自動化&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 証明書の取得から更新まで自動化することが可能&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; 安全&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 認証局サイド、管理者の両面から、最先端のプラットフォームを提供&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; 透明性&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 証明書の発行と失効が公式に記録され、一般公開され、誰でも監査できる&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; オープン&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 各手続き(プロトコル)を、オープン標準として公表&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; 互助・協力&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; コミュニティの利益のための共同の取り組みであり、1つの組織によって統制されているものではない&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
(以上、&lt;a href=&quot;https://letsencrypt.org/about/&quot; class=&quot;urlextern&quot; title=&quot;https://letsencrypt.org/about/&quot;&gt;About - Let&amp;#039;s Encrypt - Free SSL/TLS Certificates&lt;/a&gt;より抜粋)
&lt;/p&gt;

&lt;p&gt;
実際に利用するレベルから見ると、
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; 無料でSSLサーバ証明書を発行してくれるサービス。&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; あくまでもサーバー証明書のみであり、個人証明書などは発行しない&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; ドメイン認証型の証明書&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 一般に、サーバー証明書は「ドメイン認証(DV)」、「組織(企業)認証(OV)」、「実在性監査済(EV)」があるが、LEは&lt;strong&gt;DV&lt;/strong&gt;しか発行しない&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
というサービスを提供してくれるサイト及びサービスである。
&lt;/p&gt;

&lt;p&gt;
日本語訳のサイト: &lt;a href=&quot;https://letsencrypt.jp&quot; class=&quot;urlextern&quot; title=&quot;https://letsencrypt.jp&quot;&gt;Let&amp;#039;s Encrypt 総合ポータル&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Let&amp;#039;s Encrypt\u3068\u306f\uff1f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;let_s_encrypt\u3068\u306f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;494-2124&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;注意点&quot;&gt;注意点&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 証明書の有効期間は90日&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 秘密鍵ファイルはパスフレーズで暗号化していない&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 国コードや組織名の入力がない&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
つまり、あくまで、「あるドメイン」が、「申請されたタイミング」で、「管理されている&lt;strong&gt;であろう&lt;/strong&gt;」かつ「存在している」ことのみを証明するものである。
逆に、「仮に乗っ取られていたとしても申請を受けたLE側では判断しない」（管理組織が正当であるかどうかはドメインが存在しているかどうかとは独立の問題なので）ものである。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u6ce8\u610f\u70b9&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u6ce8\u610f\u70b9&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2125-2768&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;証明書の取得方法&quot;&gt;証明書の取得方法&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Let&amp;#039;s EncryptはDV証明書を発行するにあたって、ACME(Automatic Certificate Management Environment)を使用する。
このACMEは2017/03/13に、draft-ietf-acme-acme-06として更新されており、将来RFCになることが期待されている。
&lt;/p&gt;

&lt;p&gt;
このACMEを利用した証明書取得のためのツールは様々ある。LEで把握しているACMEの実装に関しては、&lt;a href=&quot;https://letsencrypt.org/docs/client-options/&quot; class=&quot;urlextern&quot; title=&quot;https://letsencrypt.org/docs/client-options/&quot;&gt;https://letsencrypt.org/docs/client-options/&lt;/a&gt;を参照すること。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u8a3c\u660e\u66f8\u306e\u53d6\u5f97\u65b9\u6cd5&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u8a3c\u660e\u66f8\u306e\u53d6\u5f97\u65b9\u6cd5&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2769-3277&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;acmeで証明書を取得・失効する流れ&quot;&gt;acmeで証明書を取得・失効する流れ&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
acme-clientのManual Pageから抄訳
&lt;/p&gt;

&lt;p&gt;
証明書取得の流れは以下の通り。
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CA(Let&amp;#039;s EncryptのACME Server)に接続し、リソースリストを要求する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; (Option) RSAアカウント鍵を作成・登録する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; RSAアカウント鍵の確認。これは、CAへの認証とその後すべてのやりとりに利用される&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; 各domainごとに以下の処理を行う&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; CAに対し、認証のChallengeを提出&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Challengeへの返答ファイルを作成する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Cアのchallengeによる検証を待つ&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 展開されたRSAもしくはECDSAのdomain鍵を読み込む&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; そのdomain及びaltnamesに記載されたドメイン用の、domain鍵を用いたX509リクエストを作成する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; X509リクエストへの署名をCAに要求する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; X509証明書(Certificate)をダウンロードする&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CA issureから来たX509証明書を展開する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 証明書チェーンをissureからダウンロードする&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
証明書失効の流れも同様。
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CA(Let&amp;#039;s EncryptのACME Server)に接続し、リソースリストを要求する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; (もし見つかれば)、X509証明書を読み込み展開する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; X509 失効要求書を作成する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CAに失効要求書を提出&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 証明書、チェン、そして、全チェーンを削除する。&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;acme\u3067\u8a3c\u660e\u66f8\u3092\u53d6\u5f97\u30fb\u5931\u52b9\u3059\u308b\u6d41\u308c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;acme\u3067\u8a3c\u660e\u66f8\u3092\u53d6\u5f97\u30fb\u5931\u52b9\u3059\u308b\u6d41\u308c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3278-4650&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit7&quot; id=&quot;challenge&quot;&gt;Challenge&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
ACMEにおけるChallengeとは、要するに「存在確認」を意味する。この存在確認方法として以下の３つがIDに定義されている。
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; http-01&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; tls-sni-01&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; dns-01&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Challenge&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;challenge&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;4651-4870&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;freebsdでのleの証明書取得から更新&quot;&gt;FreeBSDでのLEの証明書取得から更新&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
FreeBSD 11.0 RELEASE-p10 を利用している場合、LEを利用するにはportsに収録されているacme関連のツールを利用するのが一番簡単である。
おそらく、通常最も単純なのは、security/py-certbot を利用することだと考えられるが、今回は以下の理由により別ツールを利用する。
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; SSL通信を行いたいWeb Serverは、冗長化されたLoadBalancer配下に設置されていること&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Certbotは、冗長環境を考慮していない&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; 証明書取得・配布のために、巨大なpythonを導入するのは管理上面倒になる&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; python自体は良いのだが、なにがしかのpy moduleを必要とするため、Update等を考慮しなければならないのが面倒&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; certbotは有用なツールだが、中で何をしているのかわかりにくい&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
というわけで、代替ツールを利用するが、今回はacme-clientを利用する。
&lt;a href=&quot;https://kristaps.bsd.lv/acme-client/&quot; class=&quot;urlextern&quot; title=&quot;https://kristaps.bsd.lv/acme-client/&quot;&gt;acme-client&lt;/a&gt;はOpenBSDプロジェクトで利用されているacme clientアプリである。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;FreeBSD\u3067\u306eLE\u306e\u8a3c\u660e\u66f8\u53d6\u5f97\u304b\u3089\u66f4\u65b0&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;freebsd\u3067\u306ele\u306e\u8a3c\u660e\u66f8\u53d6\u5f97\u304b\u3089\u66f4\u65b0&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;4871-6028&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;今回の想定の構成&quot;&gt;今回の想定の構成&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;                     |               |
                     +-- nginx LB1 --+-- Web1a
internet -- Router --+               |
              |      +-- nginx LB2 --+-- Web1b
              |      |               |
              |          |           |
              +----------+-- Work ---+
                         |           |&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 実際には、LB と Web の間に IPS や WAF を導入しているが、本件には影響がないので割愛する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Work からのインターネットへの通信は Router 内で NAT している。&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u4eca\u56de\u306e\u60f3\u5b9a\u306e\u69cb\u6210&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u4eca\u56de\u306e\u60f3\u5b9a\u306e\u69cb\u6210&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;6029-6622&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit10&quot; id=&quot;challengeの流れ&quot;&gt;Challengeの流れ&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; WorkからNATを経由してLEに要求を送る&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; LEはChallenge TokenをWorkに返答する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; WorkはChallenge Tokenを必要な場所に設置し、Challenge要求をLEに送付する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; LEは、要求を受理し、要求のあったドメイン(ここでは、&lt;code&gt;&lt;a href=&quot;http://example.com&quot; class=&quot;urlextern&quot; title=&quot;http://example.com&quot;&gt;http://example.com&lt;/a&gt;&lt;/code&gt;とする)のWeb Server(実態はLB1/LB2)にChallenge Requestを送付&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; LB1/LB2 はChallenge要求を受け付けると、Proxyとして動作し、WorkにChallenge要求を転送する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; WorkはTokenをLEに返す&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; LEは正しくTokenを受領できた場合にのみ、Workに対して証明書を送る&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Challenge\u306e\u6d41\u308c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;challenge\u306e\u6d41\u308c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;6623-7261&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit11&quot; id=&quot;行うべき設定&quot;&gt;行うべき設定&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; LB1/LB2 に &lt;code&gt;&lt;a href=&quot;http://example.com/.well-known/acme-challenge&quot; class=&quot;urlextern&quot; title=&quot;http://example.com/.well-known/acme-challenge&quot;&gt;http://example.com/.well-known/acme-challenge&lt;/a&gt;&lt;/code&gt; 宛のRequestをWorkに転送するように設定する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Workは、&lt;code&gt;&lt;a href=&quot;http://example.com/.well-known/acme-challenge&quot; class=&quot;urlextern&quot; title=&quot;http://example.com/.well-known/acme-challenge&quot;&gt;http://example.com/.well-known/acme-challenge&lt;/a&gt;&lt;/code&gt; 宛の要求を処理できるようにする&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; httpdを立ち上げるなど&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Workが受け取ったCertファイルをLB1/LB2に自動で転送できるようにする(今回は割愛)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u884c\u3046\u3079\u304d\u8a2d\u5b9a&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u884c\u3046\u3079\u304d\u8a2d\u5b9a&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;7262-7671&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;acme-client1&quot;&gt;acme-client&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
acme-clientは、
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; OpenBSD上で開発されており、LibreSSLを利用している。&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; FreeBSDでは、ports/securityに収録されている。もちろん、Binary Packageあり。&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Linuxの場合、LibraSSLを利用することから、自力で作成するのは面倒かもしれない。Binary Packageは（あんまり探してないが）見つからなかった。&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; これを期にFreeBSD/OpenBSDなマシンを作るのもあり &lt;img src=&quot;http://www.seirios.org/seirios/dokuwiki/lib/images/smileys/biggrin.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-D&quot; /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Cで記述されており、余計なパッケージ類が不要&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
である。
&lt;/p&gt;

&lt;p&gt;
ここでは、
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 証明書を保存するDirectory: &lt;code&gt;${CERTDir}&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 証明書の秘密鍵のフルパス名: &lt;code&gt;${CERTkey}&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 申請者の秘密鍵のフルパス名: &lt;code&gt;${PRIVKEY}&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Challengeの際のChallenge tokenを保存するDirectory: &lt;code&gt;${CHALLENGE}&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
とする。
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;acme-client -bnNv -k ${CERTkey} -f ${PRIVKEY} -C ${CHALLENGE} -c ${CERTDir} 申請するURL&lt;/pre&gt;

&lt;p&gt;
を実行すると、必要な証明書等を作成し、秘密鍵、公開鍵を取得してくれる。
&lt;/p&gt;

&lt;p&gt;
オプションの意味
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -b: バックアップを作成する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -n: 4096bit RSA key（申請者用秘密鍵）を作成する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -N: 4096bit RSA key（ドメイン用秘密鍵）を作成する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -v: Verbose&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -k: ドメインの秘密鍵ファイルを指定&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -f: 申請者の秘密鍵を指定&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -C: チャレンジ用のDirectory&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; -c: 証明書を置くディレクトリ&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;acme-client&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;acme-client1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;7672-9131&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;load_balancer設定&quot;&gt;Load Balancer設定&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://www.seirios.org/seirios/dokuwiki/doku.php?do=export_code&amp;amp;id=networkapp:acme-client&amp;amp;codeblock=2&quot; title=&quot;この部分をダウンロード&quot; class=&quot;mediafile mf_conf&quot;&gt;LB-nginx.conf&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code&quot;&gt;
....(snip)

upstream HTTP_WWW {
    server 198.51.100.11;
    server 198.51.100.12;
}
upstream HTTP_ACME {
    server 192.0.2.101;
}

server {
    listen  203.0.113.11;
    server_name www.example.com;

    location ^~ /.well-known/acme-challenge/ {
        proxy_pass http://HTTP_ACME;
    }
    location / {
        proxy_pass http://HTTP_WWW;
    }
}
....(snip)&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Load Balancer\u8a2d\u5b9a&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;load_balancer\u8a2d\u5b9a&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;9132-9559&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit14&quot; id=&quot;work設定&quot;&gt;Work設定&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://www.seirios.org/seirios/dokuwiki/doku.php?do=export_code&amp;amp;id=networkapp:acme-client&amp;amp;codeblock=3&quot; title=&quot;この部分をダウンロード&quot; class=&quot;mediafile mf_conf&quot;&gt;Work-nginx.conf&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code&quot;&gt;server {
    listen          192.0.2.101:80;
    server_name     www.example.com;

    rewrite /.well-known/acme-challenge/(.*) /$1 last;

    location / {
        root    ${CHALLENGE}; # 実際のChallengeディレクトリを記載してください。
        index   index.html;
    }
}&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
これで、手元のブラウザから、&lt;code&gt;&lt;a href=&quot;http://www.example.com/.well-known/acme-challenge/index.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.example.com/.well-known/acme-challenge/index.html&quot;&gt;http://www.example.com/.well-known/acme-challenge/index.html&lt;/a&gt;&lt;/code&gt; にアクセスして、index.htmlが見えればOK
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Work\u8a2d\u5b9a&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;work\u8a2d\u5b9a&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;9560-10063&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit15&quot; id=&quot;おまけ&quot;&gt;おまけ&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
マルチドメインに対応するために、acmeを一気に処理してくれるscriptを書いたので、参考にどうぞ。
詳しいことは、自力でこのshell scriptを読んでください。
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://www.seirios.org/seirios/dokuwiki/doku.php?do=export_code&amp;amp;id=networkapp:acme-client&amp;amp;codeblock=4&quot; title=&quot;この部分をダウンロード&quot; class=&quot;mediafile mf_sh&quot;&gt;crt-update.sh&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code&quot;&gt;# cat crt-update.sh
#! /bin/sh

# Let&amp;#039;s Encrypt Certificate renewal script for FreeBSD and acme-client
#	Copyright (C) by seirios@seirios.org
#
# Usage: crt-upd.sh [target domains...]

###############################################################################

: ${DEBUG:=0}
: ${FORCE:=0}

ACME_BASE=/home/seirios/htdocs/acme
OPTS=&amp;quot;-bnN&amp;quot;
DOPTS=&amp;quot;&amp;quot;; [ ${DEBUG} -ne 0 ] &amp;amp;&amp;amp; DOPTS=&amp;quot;-v&amp;quot;
FOPTS=&amp;quot;&amp;quot;; [ ${FORCE} -ne 0 ] &amp;amp;&amp;amp; FOPTS=&amp;quot;-F&amp;quot;

ACCKEY=${ACME_BASE}/SSL/privkey.pem
SSL=${ACME_BASE}/SSL
CHALLENGE=${ACME_BASE}/WWW
DOMAINSFILE=${ACME_BASE}/domains.txt

UID=`id -u`
[ ${UID} -ne 0 ] &amp;amp;&amp;amp; echo &amp;quot;Must run on root/UID=0&amp;quot; &amp;amp;&amp;amp; exit

if [ ${DEBUG} -ne 0 ]; then
  ECHO=&amp;quot;/bin/echo&amp;quot;
else
  ECHO=&amp;quot;&amp;quot;
fi

if [ ${#} -eq 0 ]; then
  DOMAINS=`cat &amp;quot;${DOMAINSFILE}&amp;quot; | sed &amp;#039;s/[#|].*$//&amp;#039; | while read DOMAIN line ; do
    echo -n &amp;quot;${DOMAIN} &amp;quot;
  done`
else
  DOMAINS=${@}
fi

[ ${DEBUG} -ne 0 ] &amp;amp;&amp;amp; /bin/echo &amp;quot;Target domain: ${DOMAINS}&amp;quot;

for i in ${DOMAINS}; do
  echo &amp;quot;Getting ${i} Certificates&amp;quot;
  DOMKEY=/home/seirios/htdocs/acme/SSL/$i/privkey.pem
  [ ! -d ${SSL}/${i} ]       &amp;amp;&amp;amp; ${ECHO} mkdir ${SSL}/${i}
  [ ! -d ${CHALLENGE}/${i} ] &amp;amp;&amp;amp; ${ECHO} mkdir ${CHALLENGE}/${i}

  ${ECHO} acme-client ${OPTS} ${DOPTS} ${FOPTS} -k ${DOMKEY} -f ${ACCKEY} -C ${CHALLENGE}/${i} -c ${SSL}/${i} ${i}

  case $? in
    0) echo &amp;quot;${i} is updated&amp;quot; ;;
    1) echo &amp;quot;${i} is troubled&amp;quot; ;;
    2) echo &amp;quot;${i} is not need to update&amp;quot; ;;
  esac
done

###############################################################################
#
# Settings.
#	Requirement: FreeBSD and acme-client
#
# ToDo
#	- Change DEBUG/FORCE controll from environment variable to command
#	  line options.
#
# Version History
#
# ver: 0.1	Initial revision.
#      0.2	Add DEBUG initializer and FORCE initializer.
#		Display acme-client status.
#		ex. DEBUG=1 FORCE=1 crt-upd.sh
# &lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
&lt;strong&gt;注意&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; このscriptは、エラーチェックとかを、あまり正しく（細かく）やっていないので、予期せぬ挙動をする可能性があります。&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 当然、無保証です。自明だと思うんだけど、&lt;strong&gt;At your own risk&lt;/strong&gt;で。&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 時々書き換える可能性があります。&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;http://www.seirios.org/seirios/dokuwiki/doku.php?do=export_code&amp;amp;id=networkapp:acme-client&amp;amp;codeblock=5&quot; title=&quot;この部分をダウンロード&quot; class=&quot;mediafile mf_txt&quot;&gt;domains.txt&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code&quot;&gt;# ACME domain configuration file.
# format: domain|server:dir server:dir ...
www.example.com|198.51.100.11:/some/where/Certs 198.51.100.12:/some/where/Certs
www.example.net|198.51.100.11:/some/where/Certs 198.51.100.12:/some/where/Certs&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
これで、&lt;code&gt;/some/where/SSL/www.example.(com|net)&lt;/code&gt;に&lt;code&gt;cert.pem&lt;/code&gt;,&lt;code&gt;chain.pem&lt;/code&gt;,&lt;code&gt;fullchain.pem&lt;/code&gt;,&lt;code&gt;privkey.pem&lt;/code&gt;が作成されるので、必要に応じてファイルをrenameして転送すれば良い。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u304a\u307e\u3051&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u304a\u307e\u3051&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;10064-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 23 Jun 2017 03:27:17 +0000</pubDate>
        </item>
        <item>
            <title>Funkload</title>
            <link>http://www.seirios.org/seirios/dokuwiki/doku.php?id=networkapp:funcload</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;funkload&quot;&gt;Funkload&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Web Performance測定系の記事を、別にまとめたいとは思っている。が、思っているだけ。
&lt;/p&gt;

&lt;p&gt;
今回は、取り敢えず、OS-Xに &lt;a href=&quot;http://funkload.nuxeo.org&quot; class=&quot;urlextern&quot; title=&quot;http://funkload.nuxeo.org&quot;&gt;Funkload&lt;/a&gt; をInstallしてみた。
Install対象は、OS-X High Sierra。なので、HomeBrewを利用した。
&lt;/p&gt;

&lt;p&gt;
FunkloadはPythonで記述されたWeb Performance測定系のシステムである。
&lt;/p&gt;

&lt;p&gt;
&lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt;-Xのシステム(少なくともLeopard以降High Sierraまで)には、標準でPythonが導入されていることが確認されている。
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 2014/01/16時点の最新のMavericksにはPython2.7.5が入っていた。&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 2017/07/12時点の最新版（とは言えdevelopers beta)には、Python2.7.10が入っていた。&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Funkloadはこれで動作するはず。
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 参考: &lt;a href=&quot;http://qiita.com/futoase/items/fcf3f39fcb26ee0fe107&quot; class=&quot;urlextern&quot; title=&quot;http://qiita.com/futoase/items/fcf3f39fcb26ee0fe107&quot;&gt;Webアプリケーションのパフォーマンス測定ツールFunkload...&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
というわけで、以下Install手順。
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; まず、gnuplotを導入。&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;pre class=&quot;code&quot;&gt;brew install gnuplot&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://pypi.python.org/pypi/virtualenv&quot; class=&quot;urlextern&quot; title=&quot;https://pypi.python.org/pypi/virtualenv&quot;&gt;virtualenv&lt;/a&gt;を利用して、汚染されてもよい環境を作る&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Web Siteは、場合によってSiteが汚染され、Virusや変なJavaScript、Japa Applet等が【意図せず】に置かれている場合がある。&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; 本来、こういうのは奇麗に除染するべきだが、それは別の話題。&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; このような汚染されている環境対して「間違って・意図せずに」測定をすると、測定環境が汚染される恐れがあるので、汚染されてもよい環境を作る&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;pre class=&quot;code&quot;&gt;$ curl -O http://python-distribute.org/distribute_setup.py
$ sudo python distribute_setup.py
$ sudo easy_install pip
$ sudo pip install virtualenv&lt;/pre&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Pythonに関してはよく判らなかったので、&lt;a href=&quot;http://www.freia.jp/taka/docs/pyhack4/environments.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.freia.jp/taka/docs/pyhack4/environments.html&quot;&gt;distutils, setuptools, distribute, pip, virtualenv, buildout 再掲&lt;/a&gt;を参照した。簡単にまとめると、&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level4&quot;&gt;&lt;div class=&quot;li&quot;&gt; easy_install: Rubyに於けるgemのようなもの。要するにPython Packageを管理するためのコマンド&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level4&quot;&gt;&lt;div class=&quot;li&quot;&gt; distutils: Python標準パッケージ。最小限のパッケージ管理に使う&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level4&quot;&gt;&lt;div class=&quot;li&quot;&gt; setuptools: (恐らく)Obsolete。標準のdistutilsを拡張したもの&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level4&quot;&gt;&lt;div class=&quot;li&quot;&gt; distribute: setuptoolsからforkしたクローン。現在はこちらが主流の模様。Python3を利用するならこっち必須&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level4&quot;&gt;&lt;div class=&quot;li&quot;&gt; pip: easy_installと同様の機能を提供するコマンド。&lt;a href=&quot;https://pypi.python.org/pypi&quot; class=&quot;urlextern&quot; title=&quot;https://pypi.python.org/pypi&quot;&gt;PyPI(Python Package Index)&lt;/a&gt;から自動でPackageを取得するなど、利便性が向上する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level4&quot;&gt;&lt;div class=&quot;li&quot;&gt; virtualenv: Python仮想環境を構築する。&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level4 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; なお、Pythonでeasy_installで導入したpackageをUninstallする方法はよく判らない。&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level5&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://d.hatena.ne.jp/kokiya/20080920/1221931695&quot; class=&quot;urlextern&quot; title=&quot;http://d.hatena.ne.jp/kokiya/20080920/1221931695&quot;&gt;pythonモジュールのアンインストール&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level5&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://horse-brain.blogspot.jp/2012/04/python-setuppy-install.html&quot; class=&quot;urlextern&quot; title=&quot;http://horse-brain.blogspot.jp/2012/04/python-setuppy-install.html&quot;&gt;python setup.py installしたモジュールのアンインストール&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level5&quot;&gt;&lt;div class=&quot;li&quot;&gt; というわけで、Pythonを使い始める時に、さっさとdistributeを導入して、全てのPackageをそこから導入するようにしないとダメそうです。個人的には、こういうPackage管理って気持ち悪い…&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level5&quot;&gt;&lt;div class=&quot;li&quot;&gt; distributeを配布するサイトが&lt;a href=&quot;http://python-distribute.org&quot; class=&quot;urlextern&quot; title=&quot;http://python-distribute.org&quot;&gt;http://python-distribute.org&lt;/a&gt;ってのも微妙。PyPIで配ればいいのに。&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; VirtualEnv上に環境を作って、FunkloadをInstall&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;pre class=&quot;code&quot;&gt;$ mkdir /tmp/Funkload
$ cd /tmp/Funkload
$ virtualenv .fl
$ source .fl/bin/activate
$ pip install funkload&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
取り敢えず、導入は出来た。使い方は、色々使ってみてから。
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 12 Jul 2017 02:06:16 +0000</pubDate>
        </item>
        <item>
            <title>pfSense</title>
            <link>http://www.seirios.org/seirios/dokuwiki/doku.php?id=networkapp:pfsense</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;pfsense&quot;&gt;pfSense&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
pfSenseは、OpenSourceな、FreeBSDベースのFirewall関連アプライアンスである。
&lt;/p&gt;

&lt;p&gt;
同様なOpenSourceなアプライアンスとしては&lt;a href=&quot;https://opnsense.org&quot; class=&quot;urlextern&quot; title=&quot;https://opnsense.org&quot;&gt;OPNSense&lt;/a&gt;もあるが、慣れていることもあってpfSenseを利用している。
&lt;/p&gt;

&lt;p&gt;
* &lt;a href=&quot;http://www.pfsense.org&quot; class=&quot;urlextern&quot; title=&quot;http://www.pfsense.org&quot;&gt;pfSense公式サイト&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;pfSense&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pfsense&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-341&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;目次&quot;&gt;目次&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;div&gt;&lt;div id=&quot;nojs_indexmenu_20908693986856d4113e985&quot; data-jsajax=&quot;%26sort%3Dt%26msort%3Dindexmenu_n%26group%3D1&quot; class=&quot;indexmenu_nojs&quot;&gt;
&lt;ul class=&quot;idx&quot;&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://www.seirios.org/seirios/dokuwiki/doku.php?id=networkapp:pfsense:openvpn&quot; class=&quot;wikilink1&quot; title=&quot;networkapp:pfsense:openvpn&quot; data-wiki-id=&quot;networkapp:pfsense:openvpn&quot;&gt;pfSenseでOpenVPN&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://www.seirios.org/seirios/dokuwiki/doku.php?id=networkapp:pfsense:install&quot; class=&quot;wikilink1&quot; title=&quot;networkapp:pfsense:install&quot; data-wiki-id=&quot;networkapp:pfsense:install&quot;&gt;pfSenseをInstallする&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;/div&gt;&lt;script type=&#039;text/javascript&#039;&gt;
&lt;!--//--&gt;&lt;![CDATA[//&gt;&lt;!--
var indexmenu_20908693986856d4113e985 = new dTree(&#039;indexmenu_20908693986856d4113e985&#039;,&#039;bj-tango.png&#039;);
indexmenu_20908693986856d4113e985.config.urlbase=&#039;/seirios/dokuwiki/doku.php?id=&#039;;
indexmenu_20908693986856d4113e985.config.sepchar=&#039;:&#039;;
indexmenu_20908693986856d4113e985.config.useCookies=false;
indexmenu_20908693986856d4113e985.config.jsajax=&#039;%26sort%3Dt%26msort%3Dindexmenu_n%26group%3D1&#039;;
indexmenu_20908693986856d4113e985.add(&#039;networkapp:pfsense&#039;,0,-1,&quot;pfSense&quot;,&#039;networkapp:pfsense&#039;);
indexmenu_20908693986856d4113e985.add(&#039;networkapp:pfsense:openvpn&#039;,1,0,&quot;pfSense\u3067OpenVPN&quot;,0,0,0);
indexmenu_20908693986856d4113e985.add(&#039;networkapp:pfsense:install&#039;,2,0,&quot;pfSense\u3092Install\u3059\u308b&quot;,0,0,0);
document.write(indexmenu_20908693986856d4113e985);
jQuery(function(){indexmenu_20908693986856d4113e985.init(0,1,&quot;&quot;,1,0);});
//--&gt;&lt;!]]&gt;
&lt;/script&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u76ee\u6b21&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u76ee\u6b21&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;342-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 22 Feb 2016 10:44:14 +0000</pubDate>
        </item>
        <item>
            <title>Samba Server</title>
            <link>http://www.seirios.org/seirios/dokuwiki/doku.php?id=networkapp:samba</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;samba_server&quot;&gt;Samba Server&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
NetBSDでSamba Serverを建てるのが目的だが、取り敢えず、CentOSで試したのでその記録。
あとで、何とかNetBSDにも…でも、いまいち気合が入らない。
&lt;/p&gt;

&lt;p&gt;
まぁ、実質、yumでinstallするか、pkgsrcでinstallするかくらいしか違わないと思うけど。
&lt;/p&gt;

&lt;p&gt;
取り敢えず、ファイルをopenしたり、addしたりwriteしたりした場合に全て記録が出るようにしてみた。
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; sambaをInstall&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; yum -y install samba&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; smb.confを作成&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;pre class=&quot;code&quot;&gt;[global]
 	dos charset = CP932
 	display charset = UTF-8
 	server string = Samba Server Version %v
 	log level = 1
 	debug prefix timestamp = Yes
 	debug hires timestamp = No
 	debug uid = Yes
 	enable core files = No
 	cups options = raw
 	hide special files = Yes
 	hide unreadable = Yes
 	printing = bsd

[security]
 	comment = security
 	path = /samba/security
 	valid users = user1,user2,user3
 	read list = user1,user2,user3
 	write list = user1,user2
 	read only = No
 	vfs objects = full_audit			←VFSの動作全てを記録する
 	full_audit:failure = open pyrite unlink		←失敗の記録
 	full_audit:success = open pyrite unlink		←成功の記録
        create mask = 0777
        directory mask = 0777&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; rsyslogdを設定&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; /etc/rsyslog.confの末尾に以下を追加&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;pre class=&quot;code&quot;&gt;# ### end of the forwarding rule ###

user.*                                                  -/var/log/samba/audit.log&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; chkconfig nmb on&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; chkconfig smb on&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_round wrap_tip plugin_wrap&quot;&gt;
&lt;p&gt;
CentOSで配布されるSambaは、DefaultでCUPSがLinkされている。
ソースコード上の問題で、/etc/samba/smb.conf内のprinting = cupsをprinting = bsdに差し替えないと、
CUPSに繋がらないというエラーが出る(daemonは起動するし正常に動作するが、logがうるさい)ので注意
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 14 May 2018 04:29:00 +0000</pubDate>
        </item>
        <item>
            <title>NGINXでWAFを作る</title>
            <link>http://www.seirios.org/seirios/dokuwiki/doku.php?id=networkapp:waf</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;nginxでwafを作る&quot;&gt;NGINXでWAFを作る&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
NGINXを利用してWAFを作る。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;NGINX\u3067WAF\u3092\u4f5c\u308b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nginx\u3067waf\u3092\u4f5c\u308b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-73&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;目次&quot;&gt;目次&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u76ee\u6b21&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u76ee\u6b21&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;74-167&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;waf&quot;&gt;WAF&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
WAFとは Web Application Firewallの略であり。Web Serverに対する HTTP レイヤからの攻撃を観測・遮断する機能を持つものである。
&lt;/p&gt;

&lt;p&gt;
一般にWAFには、遮断モードと観測モードがある。
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 遮断モード : 攻撃を検出したら遮断する&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 観測モード : モニターモードなどともいう。攻撃を検出しても記録するだけ&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
WAFやIPSは、その挙動から、Proxy-WAFとTransparent-WAF(透過WAF)がある。
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Proxy-WAF : Proxy Serverのように、HTTP/TCP 通信を、一度WAFで終端し、WAFからバックエンドのServerにリクエストする。&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Transparent-WAF : Bridgeのように、通信経路中に存在を見せず、TCP的には透過しているように見せる&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
WAFの攻撃検知方法としては、Signature型とAnomaly型がある。
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Signature型 : 攻撃検出に(正規表現などを利用した)Signatureを利用するもの。Signatureがない攻撃は検出できない&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Signatureが命であるため、常にSignatureのメンテナンスが必要&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 無料で利用できるSignatureとして、&lt;a href=&quot;https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project&quot; class=&quot;urlextern&quot; title=&quot;https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project&quot;&gt;OWASPのCRS(Core Rule Set)&lt;/a&gt;がある&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Anomaly型 : 攻撃検出に、通信の振る舞いを見るもの。初期の段階で通信パターンの学習が必要&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
NGINXで実装可能なWAFは、mod_securityによるものがSignature型、NAXIによるものがAnomaly型といえる。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;WAF&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;waf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;168-1690&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;注意&quot;&gt;注意&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
一般に、Security保護系のシステムは、定常的な運用と定常的な保守が必要となる。特にSignature型WAFであれば、適正なSignatureを維持し、できる限り最新の情報に更新されていることが望ましい。
&lt;/p&gt;

&lt;p&gt;
したがって、WAF(に限らないが)の利用は「設置すればOK」のような考えではむしろ問題が大きくなることがある。例えば、Signatureの更新もせず、logの確認もしていない状況では、自サイトに誰かが攻撃しているのか、どんな攻撃をしているのかが把握できず、古い、比較的一般化している攻撃は防げても、新しい攻撃には対応できないなどの状況になりやすいからである。
&lt;/p&gt;

&lt;p&gt;
以上より、本番環境へのWAFの導入にあたっては、
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 外部業者のサービスを利用するか、自らが運用するかを考える&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 自らが運用する場合、本当に運用できるか？、log等はちゃんと分析可能か？などを十分に考える&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 攻撃者は、弱点を一箇所見つければそれで良いが、防御者は全体守らなければならないので、常に防御側が不利な戦いを強いられる。その状況で、どこまで対処が可能なのか？を十分に考える&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 新しい攻撃などをある程度常に追いかけることができるか？その攻撃への対策を自らで行えるか？を考える&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 自らが利用している防御システムの特性を把握し、安全性だけでなく可用性や完全性も考慮に入れたシステム全体を考える&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
ことが重要となる。
&lt;/p&gt;

&lt;p&gt;
本記事でNGINX + mod_security3を導入する場合、OWASP CRSは、「一般的な攻撃」のSignatureは提供するが、最新の攻撃や比較的特殊な攻撃には対処できない。したがって。その種の攻撃に対する対策をどうするのかの検討は必要になる。
&lt;/p&gt;

&lt;p&gt;
以上より、筆者のオススメは、外部に攻撃を仕掛けないようにする程度の隔離環境を構築した上で、 &lt;strong&gt;学習用&lt;/strong&gt; としてmod_security環境+OWSP CRSやNAXIを利用しつつ、実サービス環境には「 &lt;strong&gt;Security事業者&lt;/strong&gt; 」のサービスを導入することである。これによって、
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 事業者に対して必要な情報を正しく伝えられるようになる&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 何かあった場合にクレームを正しく入れられる&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 事業者からの情報を正しく理解できるようになる&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
というメリットもある。
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u6ce8\u610f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u6ce8\u610f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1691-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Oct 2018 09:07:09 +0000</pubDate>
        </item>
    </channel>
</rss>
