このブログを検索

2017/12/23

証明書が信頼されない2

http://monqy.blogspot.com/2017/12/blog-post_23.html
の続き

証明書内の cnを信頼せず、別のところを見ているらしい。
簡単に偽装できるからだろう。

以下をやってサーバ証明書への署名をすれば対応できると聞いて
やってみたが............

/etc/pki/tls/openssl.confを修正
[ req ]
req_extensions = v3_req

[ usr_cert ]
authorityKeyIdentifier=keyid,issuer:always

[ v3_req ]
subjectAltName = @alt_names

[alt_names]
DNS.1 = example.com
DNS.2 = *.example.com


今度は

NET::ERR_CERT_WEAK_SIGNATURE_ALGORITHM

sha1になってる。


いろいろやったが、結局以下で。
vi ./openssl.cnf
#以下のセクションのパラメータを設定
[ CA_default ]
default_md = sha256

[ req ]
default_bits = 2048
default_md = sha256

[ usr_cert ]
basicConstraints=CA:TRUE
nsCertType = server

[ v3_ca ]
nsCertType = sslCA, emailCA

これをやって、CAを作り直す。

CAを作りなおす場合、
/etc/pki/CA/private/cakey.pem
があると
-newca
をやっても動かないので消す。

あと、いったんできたファイルは全部消しておく。

そんで、サーバの秘密鍵作成、CSR作成、署名をやりなおす。
apacheを再起動、CA証明書は、cacert.pemの最後の

-----BEGIN CERTIFICATE-----
から
-----END CERTIFICATE-----

までをテキストにコピーして拡張子 .crtにすればインポートできる。

chromeもいったん終了して再起動。


晴れてchromeに「保護された通信」と認めてもらえた。







証明書が信頼されない

(追記 証明書の有効期限は長すぎると信頼されなくなるようになっており10年とかにすると信頼されない)

自分のSSLサイトに証明書をつける。 金を出して買うのではない。 自己署名証明書でもない。 CAのお墨付きの証明書だ。 ただし、そのCAは自分で建てる。 結果的には自己署名証明書のようなものだが。 サーバはさくらのVPS、centos 6.9
# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Oct 19 2017 16:43:38
# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
下記三つのファイルに有効期限の設定があるが、
/etc/pki/tls/openssl.cnf
#365を3650に

/etc/pki/tls/misc/CA
#365を3650に

/etc/pki/tls/misc/CA
#1095を3650に

1. CAを作る

/etc/pki/tls/misc/CA -newca
CA certificate filename (or enter to create)

#enterを入力

writing new private key to '/etc/pki/CA/private/./cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:

#cakeyのパスワードを2回入力
#以下は適当に
#Common NameはURLとして入力するホスト名にする。

Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Tokyo
Organization Name (eg, company) [Default Company Ltd]:example.com
Organizational Unit Name (eg, section) []:example
Common Name (eg, your name or your server's hostname) []:example.com
Email Address []:mail@example.com
以下は何も入力せずにenterでよい
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
CA証明書は下記にできる
/etc/pki/CA/cacert.pem
CA秘密鍵は
/etc/pki/CA/private/cakey.pam

2. サーバ証明書をつくる 

2-1. サーバ証明書の秘密鍵をつくる
# mkdir /etc/pki/ssl
# cd /etc/pki/ssl
# openssl genrsa -out server.key -aes256 2048
2-2. CSR(Certificate Signing Request)の作成
openssl req -new -key server.key -out server.csr

3. サーバ証明書に署名する

openssl ca -config /etc/pki/tls/openssl.cnf -in server.csr -keyfile /etc/pki/CA/private/cakey.pem -cert /etc/pki/CA/cacert.pem -out server.crt
パスワード、yを2回いれる。 下記のエラーになったときは、
failed to update database
TXT_DB error number 2
/etc/pki/CA/newcerts/に xxxxx.pem というファイルがあるはずなので、
openssl ca -revoke /etc/pki/CA/newcerts/xxxxx.pem
をやってから、署名をもう一度やる。
openssl rsa -in server.key -out server.key

4. apacheの設定

vi /etc/httpd/conf.d/ssl.conf
証明書と秘密鍵が /etc/pki/ssl にあるとして
SSLCertificateFile /etc/pki/ssl/server.crt
SSLCertificateKeyFile  /etc/pki/ssl/server.key
に変更して
service httpd restart
サイトにアクセスすると証明書が信頼できないというエラーが表示される。

証明書を表示すると「この証明書の発行者を検出できませんでした。」 となっている。

5. CA証明書をクライアントにインストール 

Windows10の場合 /etc/pki/CA/cacert.pem をクライアントにコピーし、拡張子を.crtに変える。
ダブルクリックすると証明書として表示されるので、「証明書のインストール」をクリックする。 ウィザードが走るのでインストールする。
私は「ローカルコンピューター」「信頼されたルート証明機関」にいれた。

さあこれでエラーが表示されなくなった.... と思ったら、ダメだ。
IEはエラーが表示されなくなったが、 chromeとfirefoxは依然として証明書を信頼してくれない。

chromeは
NET::ERR_CERT_COMMON_NAME_INVALID

Firefoxは
SEC_ERROR_UNKNOWN_ISSUER

....。

調べたら、対応策があるようなので、次回。

続き↓ https://monqy.blogspot.com/2017/12/blog-post_87.html

2017/12/16

資格は必要か

LPIC101を受けたのだが来年の5月で失効する。
もったいないので201を受けようと思う。
そして秋にはネットワークスペシャリストを受ける。
そして来年は久しぶりにTOEICを受けたい。


資格は重要でないという人は多いが、私は重視している。
私には学歴がなく有名企業の社員でもない。
仕事をするのに資格が条件となることはほとんどないが、
印象がよくなるのは間違いない。


数学ができなくても生きていける。
英語がわからなくても生きていける。

でも、生きる世界は数学や英語を理解している人より狭くなるのは当然だ。

資格も同様。
私が持っている資格はたいしたものではないが、
それでも合格するには時間とカネがかかるし、何よりも決意がいる。

3年や5年などあっという間に経ってしまう。

その間に仕事に忙殺され、プライベートでは低俗な楽しみで流されていくのは
悲しいことだ。

それは自分のことである。

有名企業に勤めるとか出世するとかカネを稼ぐとか、
それはそれでひとつのカタチであり、それを目指すのもいいかもしれないが、
私は彼らが楽に生きられるパスを奪い合っているようにしか見えない。
彼らが他より優秀だとも努力しているとも思わない。
単に必死で強欲なだけ。

満員電車に恥も外聞もなく乗りこめるようなずうずうしさ。
私は社会人になったばかりの頃はなかなか満員電車に乗れず、何本も電車を見送っていた。

やがて慣れてくると前の客を押し込むようにして乗れるようになっていったが、
それをたくましくなったとか生きるためには仕方がないなどとは思わない。

ただ、恥知らずに無神経になっていっただけだ。


私は、成功したいのではない。常に自分を成長させていきたい。
そこそこの仕事でいいから、役に立つ人間でありたい。

何にもしてないのにカネばかりもらいやがって、と言われるような人間にだけは、
なりたくない。









2017/11/18

Passed 300-115


ciscoの試験は今後は英語で受けることにする。

仕事で調べるときにも英語の情報しかないことは多く、
翻訳された汚い日本語よりも英語の方がわかりやすいと思うことはあっても、
やっぱり試験を英語で受けるというのは不安があった。

しかし、いざ受けてみたら意味の分からない文章や単語はほとんどなかった。

そして、300-115の2回目の受験にあたっては、いつも利用しているWEBでできる問題集を一切見なかった。

ciscoの公式ガイドの簡単な問題を一通り解いたのみ。

あとは、ヤフオクでcatalystを4台買って、自宅にラボを作って演習した。

自宅にラボを作るのが大事だ。職場にcatalystはイヤというほどあって、そこでも多少勉強はできるのだが、やっぱり自宅でやるのが一番。思う存分とことんやりたいことができ、疑問も解消できる。

おかげで前回と違って、ほとんどの問題に確信をもって答えられた。

シミュレーションを含めて。

英語で受けると試験時間が30分プラスされ、170分になったので、
落ち着いて何度も確認しながらすすめていくことができ、確か50分くらい時間を余した。

そして、単に問題集を覚えるだけでなく、実習によって知識を身に着けたという手ごたえがある。


CCNAに受かったのは2003年。

CCNPになることはそれほど大変ではないが、2回も更新したのは自分でもなかなかできることではないと思う。

受験料もバカにならないし、試験は年々難しくなっている。


さて、今回苦手意識のあるSwitchを克服したところで、絶対無理だと思っていたCCIEも視野に入ってきた。



2017/11/04

300-115J SWITCH受験記

Fail

試験が終了した後、合否の画面が表示されずにログインプロンプトになった。

自信があまりなかったが、なんとか受かっていてくれと祈っていたがイヤな予感がした。

受付に戻り結果を見ると不合格だった。


試験が始まって選択問題を10個くらい解いて、マズいと思った。

最初に、38問で790点が合格点だから、
1000点満点で一問あたり25点くらいだと計算する。

210点落とせるということは、10問落とせないことになる。

配点が高いと思われるシミュレーションを間違えようものなら
おしまいだ。

試験時間は120分で、問題数で割ると1問あたり約3分。

シミュレーションなどは時間がかかる。

選択問題は迷っているヒマはない。


が、最初の10問ぐらいを解いて、絶対あっていると確信できる問題がほとんどない。

そして、問題文と選択肢が、何を言っているのかわからないレベルの悪文。

よく言われることだが、これほどだったかと呆れた。

緊張していたせいもあっただろうか。

最初のシミュレーションは予想していたより複雑で面食らったがなんとかこなす。

が、後で知ったのだが事前事後の確認まで採点されるらしい。

ろくに確認せずにとりあえず要件通りに設定して終わってしまった。


そして、3個目のシミュレーションが終わったら、選択問題が急に簡単になった。

もしかしてもう不合格が確定したので難しい問題を出す意味がないと簡単にしたのか?

と不安になりながらサクサクと答えを選んでいき、試験を終了した。


Failの結果を受け取って愕然とする。

結構入念に準備して自信はあったのだが。

三連休の出鼻をくじかれた。


近くのファミレスへ行って、出題された問題を思い出そうとするがなかなか思い出せない。


だんだん、落ち着いてきて、反省と今後の対応を考えた。

前回、3年前のrouteのときも1回落ちて再受験して失効期限日に点数もギリギリで合格した。

初めて受ける試験ではないからと、テキストも買わずWEBでできる問題集を解いただけだったのが甘かった。

新試験になっているのに試験範囲もろくに確認しなかった。

今までは中古の実機を買って自宅で動作を確認していたのだが、

仕事で毎日catalystを触っているからとそれも怠った。



さっそくヤフオクでcatalystを買う。

4台買うつもりだ。3560なら1万円くらいで買えそうだ。

以前3550を3万で買ったことがある。


そして、英語で受けてみようと思う。

まだ失効まで3か月以上ある。


的中率の高い問題集を買えば受かるだろうが、

以前それをやって結局この有様だ。

私にはL2の知識が欠けている。


全般的に大した知識はないが、特にL2は苦手だ。

根本的に何か誤解しているか、知らないのだろう。


この悔しい経験をいい機会として、

今は仕事もそれほど忙しくないので、

3か月みっちり勉強する。


そして英語で受ける。

あの日本語はもう二度と見たくない。

英語はまあまあ得意だし。

あと、英語で受けると時間が30分プラスされるそうだ。


今回は惨敗したのだがあせりすぎて1時間近く時間があまった。

じっくり行こう、今度は。

38880円は授業料だな.....

2017/11/02

vtp version 2 と version 3

version 2でサポートされる機能

・トークンリング サポート
・認識不能な Type-Length-Value(TLV)のサポート
・バージョン依存型トランスペアレント モード
・整合性検査


トークンリングなんて若い人は知らないだろう。
私は使ったことがある。
もう20年くらい前のことだ。


version 3でサポートされる機能

・拡張認証
・拡張範囲 VLAN データベース伝播のサポート(つまりvlan 1006~4094まで)



・・・と言っても、VTPなんか使ったことない。
STPどころじゃない。

この仕事をしていて、誰かが「ヴィティーピー」と発声したのを聞いたことがない。

bpdufilterとbpduguardとloopguardとrootguard

(global mode)

spanning-tree portfast bpdufilter default

spanning-tree portfast bpduguard default

spanning-tree loopguard default

ルートガードはグローバルで指定できない。


(interface mode)

spanning-tree bpdufilter enable

spanning-tree bpduguard enable

spanning-tree guard loop

spanning-tree guard root



これも覚えられない。

globalで設定するときは、「default」で有効になる。

globalということは複数のインタフェースが対象になるから、
「ループガードが有効なのがデフォルト設定」ということだろう。

bpduフィルタとガードは、portfastが設定されているポートが対象になる。

spanning-tree bpduguard default

とは設定できない。


portfastというのは「部分的なSTP無効化」に等しい。

portfastが設定されたポートにブリッジが接続されるとSTPが働かないので、ループを防ぐことができない。

本来はそういうことのないポートにportfastを設定するべきなのだが、
bpdufilter, guardは万が一のための防御策である。


インタフェースモードの設定では、「enable」にする。

個別設定なので、有効/無効にするわけだ。

しかし、ループガード、ルートガードについては設定方法が異なる。

spanning-tree loopguard enable
spanning-tree rootguard enable

とすれば覚えやすいのにね。









2017/10/09

CCNP更新

300-115J SWITCH

を受ける。

準備はいつものようにping-tで。


もう3年経ったのか・・・。

前回の更新はrouteでやったが、1回落ちたり、
新試験になることを知らなかったり とゴタゴタしたので

今回は早めに受けることにした。


BCMSNは2007年に一度落ちて翌年passした。

2012年にswitchを受かった。

それからもう5年経つ。


最近は仕事でciscoをいやというほど触っており、

明らかにスキルアップしているのを感じる。


5年も経っているから試験内容はかなり変わって難しくなっているだろう。

油断は禁物だ。


受験料が 38880円になっている・・・。ふざけやがって・・・・。


絶対失敗できないな、これは。

2017/05/21

bind@centos6@さくらのVPS キャッシュサーバとして

DNSサーバを自前で建ててみた。

VPSで使っている自分のドメインのネームサーバはさくらインターネットのサービスを利用しており、なんの不都合もないのだが、
DNSサーバってどうやって動いてるのか知りたかったので。

まだちゃんと動いていないのだが、
起動させるだけでけっこう苦労したので
とりあえずそこまでの記録。


インストールしようとしたら、すでに入っていた。

# yum install bind bind-chroot
読み込んだプラグイン:fastestmirror, refresh-packagekit, security
インストール処理の設定をしています
(略)
パッケージ 32:bind-9.8.2-0.62.rc1.el6_9.2.x86_64 はインストール済みか最新バージョンです
パッケージ 32:bind-chroot-9.8.2-0.62.rc1.el6_9.2.x86_64 はインストール済みか最新バージョンです


設定ファイルはnamed.confということはすぐわかったが、

/etc/named.conf
/var/named/chroot/etc/named.conf

の二つがある。

「chroot環境」というものがあり、よくわからないがそっちの方がよいらしく、
すでにそれになっていた。


/etc/sysconfig/named

というファイルもある。書いてあるのは

ROOTDIR=/var/named/chroot

だけである。

WEBの情報をたよりに named.confを設定して起動してみると、エラーが出た。

/etc/named.conf:20: both "recursion no;" and "allow-recursion" active for view external

とりあえず recursion yesにした。

次のエラーは、ファイルが見つからないというものだ。

zone example.com/IN: loading from master file example.com.lan failed: file not found
zone example.com/IN: not loaded due to errors.


これはnamed.confのzoneの部分に書いたファイル名だ。


zone "." IN {
        type hint;
        file "named.ca";
};

zone "example.com" IN {
        type master;
        file "example.com.lan";
        allow-update { none; };
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

};

view "external" {
        match-clients { any; };
        match-destinations { any; };

        allow-query { any; };
        recursion yes;

        zone "example.com" IN {
                type master;
                file "example.com.wan";
                allow-update { none; };
        };

};


これの置いてある場所が正しくないようだ。

結論から言うと置くべき場所はデフォルト設定のままであれば下記だ。

/var/named/chroot/var/named/

/var/namedが二回も出てきて気持ち悪いが。

どうしてこうなるかというと、

まず/etc/sysconfig/named に書かれている ROOTDIRがあって、

ROOTDIR=/var/named/chroot

そこを起点として、

/var/named/chroot/etc/named.conf に書かれている

directory       "/var/named";

これがくっつくので、

/var/named/chroot/var/named/ となる

/var/named/chroot/etc/named.conf に2行のinclude文がある。

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";


これらのファイルは、/var/named/chroot/etc にある。

named.rfc1912.zonesの中身

# cat named.rfc1912.zones
zone "localhost.localdomain" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};

zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

zone "0.in-addr.arpa" IN {
        type master;
        file "named.empty";
        allow-update { none; };
};



ここにもzone情報があって、

named.localhost
named.loopback
named.empty

というファイル名が書いてある。

これらのファイルも、

/var/named/chroot/var/named/

にある。


これらのファイルをそろえて、中身についてはさがせば情報があるので
それを書けばとりあえず起動する。


dig yahoo.co.jp @ns.example.com

VPSで引けたので、一応動いている。


自分のパソコンからVPSのサーバーを指定してnslookupしてみるとtimeoutする。

iptablesで開けたはずなのにと思ってみたら tcp 53になっていたので udpにする。

今度は Query refused となる。


/var/named/chroot/etc/named.conf

のallow-なんとかに、自分のIPアドレス(「確認君」で出るやつ)を書いてやると
引けるようになった。

options {
        .......
        allow-query     { localhost; localnets; xx.xx.xx.xx;  };
        allow-recursion     { localhost; localnets; xx.xx.xx.xx;  };
        allow-query-cache     { localhost; localnets; xx.xx.xx.xx; };
        forwarders{ 8.8.8.8; 8.8.4.4; };
        recursion yes;
        .........
};


私がやりたかったのはこれである。
こういう機能をするDNSサーバは「キャッシュサーバ」と言う。
パソコンとかで設定するDNSサーバとはキャッシュサーバのことだ。

でも、ISPとかのDNSサーバのように、だれでもクエリを許可するにはどうすればよいのだろうか?
また、そうすることの危険性ってないのだろうか?


自分のドメインのゾーン設定についてはあらためて。