各端末へのクライアント証明書のインストール

androidiosubuntuへクライアント証明書をインストールした際のメモ

インストール方法が端末によって癖があるので少しハマった。

ちなみに証明書はCAを構築して作成したが、作成方法は他のサイトで見つかるので割愛。

ios

ios バージョン:9.3.5(ipad miniの結構古いやつ)

webサーバから証明書をダウンロードしてインストールしようと試みるが、chromeではダウンロードしたあとのインストールが出来ない。

Safariでダウンロードすると、設定に切り替わり、インストール出来る。 (メール経由でも出来るようである)

android

android バージョン:6.0.1

同じくwebサーバからダウンロードする。

ダウンロードするものの、「インストール出来ませんでした。証明書ファイルが読み取れませんでした」と表示が出る。

設定→セキュリティ→情報セキュリティ→証明書のインストールからインストールすると正常にインストール出来る。

(webから安易にインストール出来ないようにということなのだろうか)

なお、インストールした証明書の一覧を出したり、個別にクライアント証明書を削除する機能もなさそうである。

ubuntu

ダウンロードしてダブルクリックするとGnome2 key strageにインストール出来るがブラウザとの連携が不明のため、chromeで個別に設定(インストール)した。

多分連携が出来ると思うが、よくわかっていない。

追記

CRLを作成してApacheの設定をしたが、うまく動作せずハマったのでメモ。 /var/log/httpd/ssl_error_logに以下のエラーが出ており、Apacheのコンフィグを変更した。

 X.509 CRL storage locations configured, but CRL checking (SSLCARevocationCheck) is not enabled

Apacheに以下を追記して解消

 SSLCARevocationCheck chain

参考: https://stackoverflow.com/questions/23939112/apache-not-checking-crl-for-revoked-certificates

conohaのvpsにcentos7の作業環境作ったのでまとめ(ログイン環境編)

これまでdtivpsを作業環境として使っていたのだが、centos6からcentos7に環境を変えるのを契機にconohaに乗り換え。ということでログイン環境の設定をしたのでメモ。 今回は主にpostfixopenvpnの設定。 postfixはroot宛メールをgmailに転送する用で、外向けに送信が出来ればいいので、真面目なメールサーバは作っていない。

パッケージのインストール

postfixはデフォルトでインストール済みなのでopenvpnだけインストール。 zshとか色々入れているけれど、ここでは割愛。 net-toolsは元々入っていたかもしれない。bridge-utilsはいらないかも。。。

sudo yum --enablerepo=epel install openvpn easy-rsa net-tools bridge-utils

設定

まずはホストネームとドメインネームの設定。

1.hostname

/etc/hostnameに以下を入れる。

<hostname>.<domain name>

2.domain name

centos7からはコマンドで設定。

sudo nmcli c modify eth0 ipv4.dns-search <donamin name>

設定入れたらリブート。

3.aliasとログイン時のslack通知の設定

今回は別ユーザにroot宛メールを転送し、それからgmailへ転送する。

まずはユーザの追加

 useradd <new user>
 passwd <new user>

/etc/aliasesに以下を追加

 root: <new user>
 <new user>: <mail address>

忘れずにnewaliases

sudo newaliases
  • slackへの通知設定

事前にslackにてapi urlを取得しておき、/etc/ssh/sshrcに以下を追記

 curl -X POST --data-urlencode \
  "payload={\"channel\": \"#<channel name>\", \
   \"username\": \"$USER\", \
   \"text\": \"$USER has logged in from $SSH_CLIENT at `date +"%Y/%m/%d %p %I:%M:%S"`\", \
   \"icon_emoji\": \":ghost:\" \ }" \
   <slack api url> > /dev/null 2>&1 &
  • sshのポート番号を変える

/etc/ssh/sshdのポート番号設定箇所(port=22)を変更。デフォルトは22だが、好きな番号にする。

変えたらsshdをリスタート

  • firewalld

/usr/lib/firewalld/services/ssh.xmlを/etc/firewalld/servicesにコピーして、ポート番号を変えておく。

firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload

smtp

1.postfix

基本はデフォルトの通りだが、以下修正箇所

myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

2.dns

conohaのコンソールにて以下レコードを追加する。 今回はサブドメインを使用するのでAレコードも必要になる SPFとしてTXTレコードも入れるとgmailがメールに重要マーク付けてくれる。

MX record: mx.<donamin name> value=mail.<donamin name>
A record: mail.<domanin name> value=<ip address>
TXT record: value="v=spf1 ip4: <ipaddress> -all"

3.firewalld

忘れずにポート開放。

firewall-cmd --add-service=smtp --permanent
firewall-cmd --reload

4.動作確認

  • オープンリレーの確認

不正利用されないようにオープンリレーになっていないかの確認。 ブラウザで以下サイトにアクセスして自分のメールサーバを入力

 check.jippg.org

メールサーバから以下アドレスにメール送るとspfの設定状況を返送してくれる。

 check-auth@verifier.port25.com

openvpn

1.鍵の生成

easy-rsaをつかって鍵、証明書を作成。詳細は割愛。廃止リストも作っておく。今回は/etc/openvpn/keysに諸々の鍵を配置した。必要なのは ca.crt, server.crt, server.key, client.crt, client.key, ta.key, crl.pem dh2048.pem。

いつも忘れるのだが、crlは証明書(certificate)、keyは鍵(key)、crlは廃止リスト(certificate revocattion list)、pemはファイル形式を示しているだけ。ta.keyはtls-auth用の鍵でこれによりHMAC署名が付く。

2./etc/openvpn/server.confの修正

<port number>は好きなポート番号に変える。デフォルトポートは使いたくない。 以下有効設定の抜粋

port <port number>
proto udp
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
tls-auth keys/ta.key 0 # This file is secret
cipher AES-256-CBC
persist-key
persist-tun
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
verb 3
explicit-exit-notify 1
crl-verify keys/crl.pem
script-security 2
--client-connect /etc/openvpn/up.sh
--client-disconnect /etc/openvpn/down.sh

3.デーモンの設定

systemctlで設定する。 /usr/lib/systemd/system/openvpn@.serviceをopenvpn.serviceに書き換えて設定してもいいのだけれど、とりあえずopenvpn@serverにて対応。どっちのやり方が良いのかはよくわかっていない。

sudo sytemctl enable openvpn@server
sudo sytemctl start openvpn@server
  • up, down script

vpn接続時にslackに通知出す。 以下を/etc/openvpnに配置

up.sh

#!/bin/bash
time=$(echo $(date +"%c"))
USER=root
TEXT=`cat <<EOF
openvpn up
virtual ip address = $ifconfig_pool_remote_ip
ip address = $untrusted_ip
$time name = $common_name
EOF`
 curl -X POST --data-urlencode \
  "payload={\"channel\": \"#<channel name>\", \
   \"username\": \"$USER\", \
   \"text\": \"$TEXT\", \
   \"icon_emoji\": \":ghost:\" \ }" \
   <slack api url> > /dev/null 2>&1 &

down.sh

#!/bin/bash
time=$(echo $(date +"%c"))
USER=root
TEXT=`cat <<EOF
openvpn down
virtual ip address = $ifconfig_pool_remote_ip
ip address = $untrusted_ip
$time name = $common_name
EOF`
 curl -X POST --data-urlencode \
  "payload={\"channel\": \"#<channel name>\", \
   \"username\": \"$USER\", \
   \"text\": \"$TEXT\", \
   \"icon_emoji\": \":ghost:\" \ }" \
   <slack api url> > /dev/null 2>&1 &

4.ログの設定

ログのローテーションの設定/etc/logrotate.d/openvpnを作成し、以下を入力。

/var/log/openvpn.log {
 missingok
 notifempty
 sharedscripts
 postrotate
 systemctl restart openvpn@server 2>&1 > /dev/null || true
 endscript
 }
logrotate -dv /etc/logrotate.d/openvpn

にてdry-runが出来る。-fvにすると強制実行。

5.firewalld テンプレートをコピーして編集、ポート開放する。

cp /usr/lib/firewalld/services/openvpn.xml /etc/firewalld/services/
vi /etc/firewalld/services/openvpn.xml
firewall-cmd --add-service=openvpn
firewall-cmd --reload

openvpnで出来たtun0インターフェースにはinternalゾーンを適用

firewall-cmd --change-interface=tun0 --zone=internal
nmcli conn show tun0

nmcliでないと、どのzoneが適用されているかが確認できないのだが理由がよくわからない。

※追記:この設定を入れてもゾーンはデフォルトのpublicが適用されている。仕方がないので、デフォルトゾーンをinternalに変更して対応。どうやらknown issueのようであるが、解消されてないのかな。 Bug 1065948 – firewalld zone not applied for vpn connections

firewalld

firewalld自体のログの設定

1.ログ取得の有効化

firewall-cmd --set-log-denied=all

にてdropしたログが/var/log/messagesに吐き出される。

2.modify /etc/rsyslog.conf

:msg, contains, "FINAL_REJECT" -/var/log/firewalld-drop.log

にてログを別ファイルに吐き出すように変える。 "FINAL_REJECT"はデフォルトのプレフィクス。 (本当はプレフィクスも変えたいが、デフォルトの設定がどうなっているのかよくわからないので、今回はそのまま)

3.logrotate

ローテーションの設定、ログのたまり具合が速かったのでdailyにしてみた。 /etc/logrotate.d/firewalldに以下を入力。

 /var/log/firewalld-drop.log /var/log/firewalld {
 daily
 rotate 4
 create
 postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
 endscript
 }

TOEIC 受験記

TOEICを受けてきたので、やったことのまとめ。

目標

730ラインは前回(4年以上前)にクリアしていたので、今回は860オーバーを狙う。
出来れば、きりがいいので900取りたい。

やったこと

スタディサプリ英単語

 TOEICモードにて語彙強化として使用。600、730、860の三段階の目標スコア別ににてそれぞれ、800、540、240語が用意されている。2〜3週かけて一通り標準トレーニング(1問1答形式にて4択意味を答えていいく)をやって、その後はチャレンジモード(1問1単語で、和訳、リスニング、ライティングの形式がランダムに選ばれ、制限時間内に解答を繰り返す)を行った。単語単位ではあるが、リスニングも出来るので、重宝した。
 TOEIC向けの単語強化には非常に役に立った。解答の選択肢が微妙なものがいくつか混ざっていたりするので、ちょっとだけ注意が必要であった。

語源で覚える英単語

 語彙強化その2。どうしても覚えにくい単語はこちらのアプリで語源を調べて覚えた。語源毎のまとめと、単語検索にて語源を調べることが出来るので便利。

TOEIC English Upgrader

 TOEIC公式対策アプリ。リスニング対策として使用。通勤中などに使用したが、結局聞き流しになっていた感が否めない。とはいえ、エピソードの数が豊富なので、リスニング対策には非常に役に立つ。実際の問題の形式になっているともっと使う気になるかも。次も受けることになったらもっと真面目に使おう。

TOEIC 公式問題集

 TOEICテスト新公式問題集のVol.3とVol.4(1世代古い方の問題集)及び公式TOEIC Listening & Reading 問題集2(最新の世代)を使用。1世代前と現行(L&R)の主な変更点としては、リスニングのPart3,4に図を見て応える問題が増え、リーディングのPart7の問題数が増えた(Part5の問題数が減る)などがある。また、Part6やPart7で文の当てはめ問題が増えている。全体として難しくなった印象。特に、Part7の問題数増に伴い、時間配分の見直しが必要になったことは大きい。
 時間配分は

  • part5: 15分
  • part6: 8分
  • part7: 52分

が目標。当初(前世代)は、集中力のあるうちにpart7を先に問く戦略を考えていたが、分量増に伴い、part5から解く戦略に変更。受験した直後の感触としては、こちらの順番で間違ってはいなかったと思う。
 問題集の使い方としては、模擬試験として使用。時間配分や実力の確認が目的。土日にそれぞれ1回分ずつで試験3週前から使用。
 スコアも参考程度に算出できるが、算出スコアの幅が広すぎて本当に参考程度な感じ。

感想

 スマホアプリで勉強できるようになっているので、非常に勉強が捗った。リスニングで1部単語が聞き取れないなどがよくあるので、やはり継続的に勉強が必要と思われる。リーディングも時間配分と問題形式にいかになれるか、がポイントだった気がする。時間内に一通り解き終えることが出来たが、あと2,3分短縮して見直しの時間が欲しかった。練習問題の感触から考えると、800の後半は行ったんじゃないかと思う。


結果

920でした!

コマンド備忘録

[Linux]コマンド備忘録

管理用コマンド

  • top
  • lsof
  • sar
  • du
  • df

表示・編集用

  • less (-Nで行番号表示)

ソースコードに色をつけたりも出来る

lessとgrepに色を付けてコードを読みやすく - Qiita

  • grep(-rでフォルダ内を再帰的に検索、-nで行番号表示、--with-filenameでファイル名表示)

Linuxのエントロピー

タイトルのまんまなんだが、Muninでエントロピーって表示されてて何これ?ってなったのでメモ書き。

今まで乱数って擬似乱数生成で作ってるのかと思ったら、環境ノイズから乱数をとっているらしい。

奥が深いですね。。。

yum updateでopenvpnが2.3から2.4になったと思ったらVPNが切れてしまった。

どうやらCRLがexpireされたことになっている。

CRLほか一式再作成して復旧した。

アップデートするときには気をつけろということだな。。。

4回目でアマゾンアソシエイトの審査に通った話

真面目に記事を書くモチベーションにしようとアマゾン アソシエイトプログラムに参加したので、
審査の体験をまとめます。

アマゾン アソシエイトの審査の通過については多数のブログ等で詳しくまとめられているので、
ここでは個人的にひっかかった(と思われる)点についてのみ記載します。

審査1回目

何も深く考えずにアソシエイトに応募。
この時点では審査の存在すら気にしていなかった。
審査後すぐに「アソシエイトプログラムへようこそ」ってメールが来るので、
何だ簡単じゃんくらいの気分だった。

そんなところに例の「審査結果のお知らせ」メールが届き、1回目はあえなく撃沈。
曰く「現段階ではコンテンツが少ないため、必要な審査を行うことができませんでした」とのこと。
門前払いということだろうか?

審査2回目

さすがにショックなので、ググって知識をつける。
ひっかかったであろう項目としては

  1. プロフィールをブログに入れていない
  2. 応募時のブログの内容を適当に入力していた(詳細に入れたほうがいいらしい)

が思い当たったので再度チャレンジ

が、再度お祈りメールならぬ「審査結果のお知らせ」メールが届く。

今回は「下記の項目に当てはまる場合には、ご参加をお断りさせていただいております。」の文があり、
よく見るアソシエイトの条件8項目が記載されている。

進展したとみていいのだろうか。。。

審査3回目

ここいらで気持ちを入れ替えて、自己分析、じゃなくて審査に通らない理由を考えてみる。
内容はともかく、記事数は一応あるし、トップ画面にはちゃんとした記事が並んでいる。
が、アマゾンの商品が記事の中に参照されていた(画像あり)。
なるほど、勝手に商品を入れるのはまずかろうと、画像なしに変更。
これならよかろうと、再審査。

待つこと半日、今度も通らず。
メールの内容も「現段階ではコンテンツが少ないため、必要な審査を行うことができませんでした」に戻る。
どういうことだろう。

審査4回目

ブログの内容、設定等を念入りに確認してみる。
見栄えを良くするため、トップ画面に載っていた数行のみの記事を下書きに戻してみる。

また、設定を確認するとアマゾンのおすすめ商品を紹介するようにチェックが入っていたため、これを外す。
こいつが原因じゃなければ運ゲーなのかもしれないと思いつつ、応募してみる。
ここまでくればとことん応募してやろうと、開き直ってきた。

そんなところで、結果、無事に審査に通りました。
なお、メールアドレスはフリーでアマゾンでの購入歴はありです。

というわけで、このブログは「Amazon.co.jpアソシエイト」の参加者になりました。