2014年12月1日月曜日

SSL証明書の更新方法

この記事は、「(主に一人)情シス Advent Calendar 2014」の1日目の記事です。


SIer時代は全くやったことなかったのですが、Web系の会社に転職した最近ではよくやるので、自分のメモとして残しておきます。

サーバログイン

下記サーバー上にSSHでログインして作業
ip : あなたのサーバのIPアドレス
user : ユーザ名
pass : パスワード

作業フォルダ作成

なんでもいいけど、作業用フォルダを作成する。今回は西暦フォルダの下にドメインごとのフォルダを作成することにしてみた。
cd /root/ssl
mkdir -p thisyear/yourdomain
cd thisyear/yourdomain

事前準備

CSR情報の確認

以下のような情報が必要。opensslコマンドを実行し、過去のCSRから情報を取得する。
  • 提出するSCRに記載する値
    • 都道府県
    • 市町村
    • 会社名
    • 部署名
    • コモンネーム(サイトURL)
    • メールアドレス ※任意
以下のコマンドを実行して、現在のCSRから提出した時の情報を取得する
 openssl req -text -noout -in ../lastyear/yourdomain.csr
もちろんだが、yourdomain.csr(去年作成したCSRファイル)が残っていなければならない。

ランダムファイルの作成

秘密鍵を作成する際に利用するなるランダムファイルを作成する。ランダムファイルはopensslの機能を使って作成することが可能。
echo 適当な文字列 > temp
/usr/bin/openssl md5 temp > rand.dat

秘密鍵の作成

openssl genrsa -rand rand.dat -aes256 2048 > yourdomain.key

CSRの作成

SHA-256(SHA-2)を利用した証明書を作成するため、以下のようなコマンドでSHA-256向けのCSRを作成する。
/usr/bin/openssl req -new -key newkey.key -out newcsr.csr -sha256
CSRに入力すべき情報を求められるので、事前に確認した情報を入力していく。
コモンネームだけは絶対に間違えないように、一度コピーしてクリップボードに入った情報をブラウザにペーストしてみて、そのサイトが表示されることを確認してからコンソールにもペーストする。

CSRの提出

利用しているSSL証明書発行会社のサイトにログインしてCSRを提出する。
例としてジオトラストのURL。
 https://storefront.geotrust.co.jp/sf/login.do
CSRが問題なく提出できている場合は、クレジットカードの情報の入力が必要になるため、お金の管理者に入力を依頼する。

認証メールの受信

SSL証明書発行会社に登録してあるアカウントに証明書が送られてくる。
送られてきたURLをクリックして、認証を完了させる
ちなみに、選択できるメールアドレスは、Whoisに記載されているものか、ドメイン名から自動で生成された代表的な管理者向けメールアドレスのみである。
選択可能などのメールアドレスも受信できない場合は、選択肢にあるどれかのメールアドレスをメールサーバ上に作成し、受信可能な状態にするか、Whoisで登録しているドメイン管理者のメールアドレスを現在存在するものへ変更する必要がある。

SSL証明書の受信

SSL証明書が早ければ数分後にメールで送られてくる。
メールに直接暗号が記載されているので、それをコピペして証明書ファイルを作る。
「-----BEGIN CERTIFICATE-----」から、「-----END CERTIFICATE-----」までを、それを含めて切り取り、別ファイルにする。
ファイルは空行を含んではいけず、最終行は「-----END CERTIFICATE-----」で終わっていなければならない。それ以降に1文字も入っていてはいけない。スペースも入っていてはいけない。

中間CA証明書の作成

SSL証明書を購入した業者のサイトにて提供されている証明書を組み合わせて、中間CA証明書を作成する。ファイル名は「inca.pem」にしていますが、判別さえできればなんでもいいみたいです。
-----BEGIN CERTIFICATE-----
セキュア・サーバID 三階層目中間CA証明書
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
二階層目中間CA証明書(製品共通)※クロスルート証明書
-----END CERTIFICATE-----
ちなみに、ジオトラストの場合はhttps://www.geotrust.co.jp/resources/repository/intermediate.html からそれぞれ取得できるので、自分で貼りつけて作成する。

パスワードを抜く

cp yourdomain.key yourdomain.key.original
openssl rsa -in yourdomain.key.original  -out yourdomain.key
ここでパスワードを尋ねられるので入力すると、パスワードが外された状態の yourdomain.key が出力される。本当はパスワード付きの方がいいんですが、Webサーバを再起動する度にパスワードを尋ねられるので、「そんなどめんどくさいから抜いちゃえ」とパスワードを抜く場合が世間的にも多いようです。

IIS用の証明書に変換

IISが求める形式に変換するには以下のコマンドを実行します。
openssl pkcs12 -export -inkey yourdomain.key -certfile geotrust.co.jp.cert -in yourdomain.cert -out yourdomain.pfx

2014年11月16日日曜日

受けるなら今のうち?Google Analyticsの試験に合格しました



お久しぶりでございます。
TearTheSkyです。
会社でアクセス解析系な案件のお仕事が私のところに流れてきて、必要性に駆られてGoogle Analyticsの本を読み始めていたのが10月のはじめ。
ググっているとどうやら資格があるらしいことがわかりました。
名前はGAIQ(Google Analytics Individual Qualification)。
お金を使って本を何冊か買って読んだりしたんだから、せっかくだしこの資格に合格して、自分の中で区切りをつけよう。
そう思って昨日の2014/11/15に受験し、合格しました。

資格の概要

こちらのまとめが詳しいですが、現在はまた様式が変わっています。
http://matome.naver.jp/odai/2133894038528998901
資格の立ち位置ですが、システム開発における基本情報技術者試験のようなものだと考えるとわかりやすいと思います。
つまり、「一通りの基礎知識はあるみたいだね」「ちゃんと勉強したんだね」ということを証明する程度です。
Google Analyticsを使ったすご腕解析者であること」を証明してくれるわけではありません。

過去の概要

  • 受験費用:US50ドル(テストセンターにてクレジットカード決済)
  • 受験言語:英語
  • 問題数:70問
  • 出題形式:テスト画面での選択チェック方式(複数選択チェックボックスあり)
  • テスト時間:90分
  • 合格正解率:80%
  • 特記事項:テスト開始後は中断が可能。中断中は経過時間のカウントも停止します。ただし、テスト開始後120時間(5日間)以内に終了しないといけません。

現在の概要

  • 受験費用:無料!自宅のPCのブラウザで受験可能。
  • 受験言語:日本語!
  • 問題数:70問
  • 出題形式:テスト画面での選択チェック方式(すべてラジオボタンでの単一選択)
  • テスト時間:90分
  • 合格正解率:80%
  • 特記事項:テスト開始後は中断ができなくなりました。テスト時間中に別のタブやブラウザで調べ物をすることは可能。
  • 特記事項:Google パートナーズ プログラムに参加していないと受験できない。
日本向けにローカライズされたことと、受験料が無料になったことがかなり大きいです。
その分相対的に試験の価値が下がったりするかな・・・?
それから、Google パートナーズに登録していないと受験できなくなったみたいです。
法人向けなイメージを強調したいのでしょうか。
Googleパートナーズのアカウントがあると、以下のようなページにアクセスすることができます。




登録していないアカウントの場合は、このような画面が表示されます。


やったこと

  • 本を読む
  • 会社のアカウントを使っていろいろいじってみる
  • GAIQについて調べる
  • 無料の学習ページを読む
  • 無料の動画コンテンツを見る
  • 受験

会社のアカウントを使っていろいろいじってみる

会社で運営しているWebサービスにはすでにGoogle Analyticsが導入されていて、
基本的な設定は行われていたので、「どこでどんな情報を閲覧することができるのか」
という観点で、早く一人前のGoogle Analyticsユーザになるためにいろいろツール内を見て回りました。
自分のアカウントを作って自分のサイトにトラッキングコードを埋め込んで使ってみるのもいいと思います。
アカウント開設から閲覧可能になるまでの作業がしっかり理解できるようになるのでお勧めです。

本を読む

実際の画面を見て、意味がわからないところはググったりして、少しずつ意味がわかってきました。
ですが、あまりにも断片的すぎると感じたので、手っ取り早いし本を買って読むことにしました。
購入した本はこちら


無料でできる! 世界一やさしいGoogle Analytics アクセス解析入門

こちらの本はどちらかというと、「Google Analyticsの何を見てどうするのか?」という点で非常に役に立つ本です。試験への貢献度は低いと思います。Analytics自体の知識は断片的にしか出てこないですが、業務上必要な箇所は重点的に抑えていると思うし、グロースハックのマインドも身につきます。


 
Googleアナリティクス基礎講座 (得する<コレだけ! >技)

これは7割ぐらいがマニュアル的に「どこで何ができるか」が書いていて、今回の試験のための知識注入という意味では合っていると思います。読みやすかったです。後半の最後のほうにアクセス解析の考え方も書いてあります。


 
Google Analyticsパーフェクトガイド 増補改訂版 Ver.5/ユニバーサルアナリティクス対応

これは分厚くて実はぜんぜん読みきれていません。業務の合間に辞書のように読むのがいいと思います。ゲームの攻略本でいうと「アルティマニア」とか「解体新書」的な感じです。

GAIQについて調べる

「GAIQ」でググるといくつか紹介されてるブログ等が検索できますので、そこを読んで試験の概要について理解しました。
英語だけど中断しながら機械翻訳に頼ってやってけばいいんだな、5000円取られちゃうんだなー、くらいに思っていました。
まさか日本語で無料で受けられるようになっていたとは・・・。ラッキーだ。

無料の学習ページを読む

「Google アナリティクス IQ 学習ガイド」(https://support.google.com/analytics/topic/6083717)というページがあります。
ここを全部読みました。
いくつかの、ページの中身がリンクだけの基礎的な内容はめんどくさくなってパスしました。
やっぱりリンク階層が無駄に深いと閲覧欲求も失せていきますね。

無料の動画コンテンツを見る

「Analytics Academy」(https://analyticsacademy.withgoogle.com/explorer)というコンテンツがあります。
こちらの「Google Analytics Platform Principles」というコンテンツをすべて閲覧しました。
内容としては、GoogleのAnalyticsエバンジェリストが出てくる、動画で学習できるコンテンツを見て、同じページ内にある簡単な問題を解いて実力を確かめる、というようなものです。
私は受験するまで英語での試験だと思っていたので、コンテンツは生のまま流して理解に努めましたが、Youtube動画なので、翻訳機能が利用できます。翻訳を表示しながら見てもぜんぜん問題ないと思います。
アカデミー内のほかのコンテンツ(Digital Analytics Fundamentalsなど)も見ておいたほうがいいと思いますが、私はめんどくさくなって見ませんでしたw

受験

Googleパートナーズの資格認定状況のページに受験ボタンのリンクがあります。なので、Googleパートナーズに登録していないと受験できません。
個人のGoogleパートナーズのアカウントを作って受験しようと思いましたが、会社のアカウントがまだ認定されていなかったので、会社のアカウントで受験することにしました。
結果は本記事の冒頭でお見せしたように、カンニングし放題だったにもかかわらず、非常にギリギリでした。危なかった…w
合格すると認定資格証のページが作成され、Googleパートナーズの管理画面からアクセスすることができるようになります。
会社のアカウントなので、ちょっと今回は伏せておきます…。


ということで、晴れて勤務先の会社がGoogle Analytics認定となりました。
めでたしめでたし。
Googleパートナーズですが、個人でもアカウントを作成すべきなのかどうかがちょっと良く分かっていません。
個人事業主なら作るべきなんだろうけど…。
もしアクセス解析のお仕事がございましたら、そのときはGoogleパートナーズに登録して試験を受けなおしますので、ご連絡いただけましたら幸いですw

2014年10月5日日曜日

CentOS 6.5 に Trac 1.0.1 をインストール

ブログのサイドバーにある、「人気の投稿」のトップがTracのインストールなのですが、あまりにお粗末なので、アップデート版を書きたいと思っていました。で、書きました。
CentOS6.5にTracをインストールします。Tracのバージョンは気づいたら1.0越えてました…。
前提として、CentOSはminimalの構成でインストールしたものを使いました。また、yumとかpipとかのインターネット経由でのダウンロードを利用しています。
では、以下手順。

iptablesで80番ポートを許可する

vi /etc/sysconfig/iptables
22番ポート許可の下に80番ポート許可を追加して以下のようにする。
 # Firewall configuration written by system-config-firewall
 # Manual customization of this file is not recommended.
 *filter
 :INPUT ACCEPT [0:0]
 :FORWARD ACCEPT [0:0]
 :OUTPUT ACCEPT [0:0]
 -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 -A INPUT -p icmp -j ACCEPT
 -A INPUT -i lo -j ACCEPT
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
 -A INPUT -j REJECT --reject-with icmp-host-prohibited
 -A FORWARD -j REJECT --reject-with icmp-host-prohibited
 COMMIT

各種プログラムのアップデート

# yum -y update

GCCのインストール

# yum install gcc

vimのインストール

# yum install vim

wgetのインストール

# yum install wget

curlのインストール

# yum install curl

httpdのインストール

# yum install httpd httpd-devel

python用Apacheモジュールのインストール

# yum install mod_wsgi

mySQLをインストール

# yum install mysql mysql-devel mysql-server

mySQLの操作

# /etc/init.d/mysqld start
# /usr/bin/mysqladmin -u root password ‘new-password’
# mysql -u root -p
mysql> create database trac default character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
create user tracuser identified by ‘new-password’;
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on trac.* to tracuser@localhost identified by ‘new-password’;
Query OK, 0 rows affected (0.00 sec)

pipのインストール

babelインストール

# pip install babel

genshiインストール

# pip install genshi

python用mysqlバインディングのインストール

# pip install mysql-python

Tracのインストール

# pip install trac

各種プログラムのアップデート

# yum -y update

Tracの設定

# mkdir /var/trac
# vim /var/trac/trac.wsgi
以下を挿入
 import os
 import trac.web.main
 os.environ['TRAC_ENV_PARENT_DIR'] = '/var/trac'
 application = trac.web.main.dispatch_request
# vim /etc/httpd/conf.d/trac.conf
以下を挿入
 WSGIScriptAlias /trac /var/trac/trac.wsgi

 
 WSGIApplicationGroup %{GLOBAL}
 Order deny,allow
 Allow from all
 

 
 AuthType Digest
 AuthName "trac_login"
 AuthUserFile /etc/httpd/conf.d/.htdigest_trac_users
 Require valid-user
 

 
 AuthType Digest
 AuthName "trac_users"
 AuthUserFile /etc/httpd/conf.d/.htdigest_trac_users
 Require valid-user
 

ユーザ作成

# htdigest -c /etc/httpd/conf.d/.htdigest_trac_users “trac_users” tracadmin
# htdigest /etc/httpd/conf.d/.htdigest_trac_users “trac_users” tearthesky
# trac-admin /var/trac/mylife permission add tracadmin TRAC_ADMIN

新しくプロジェクトを作る

# trac-admin projectname initenv
 はじめに、プロジェクトのデータベースの初期化と準備をするために、
 環境についていくつか質問をします。

 プロジェクトの名前を入力してください。
 この名前は、ページのタイトルと説明に使用します。
プロジェクト名 [My Project]> projectname
 使用するデータベースへの接続文字列を指定してください。
 デフォルトではローカルに SQLite データベースを作成します。
 既に存在する PostgreSQL データベースを使うこともできます。
 (Trac では、接続文字列は厳密に表記する必要があります。
 詳細は Trac のドキュメントを参照してください)
mysql://tracuser:new-password@localhost:3306/trac
 (略)

 Trac Environment 'projectname' ができました。

 今後、この環境の設定をする場合は、次のファイルを利用します。

 /var/trac/projectname/conf/trac.ini

 新しいプロジェクトを試しに実行してみたい場合は、スタンドアロンウェブ
 サーバ `tracd` を試してみてください。

 tracd --port 8000 /var/trac/projectname

 それから、ブラウザで http://localhost:8000/projectname
 にアクセスします。インストールしたバージョンに合わせた今後のセット
 アップ情報などが含まれたドキュメントが閲覧できます。(例えばウェブサー
 バで公開する手順など。)

 最新のドキュメントは、プロジェクトのウェブサイトから入手できます。

 http://trac.edgewall.org/

 Congratulations!

Tracのディレクトリの所有者を変更

# chown -R apache:apache /var/trac

SELinuxの設定

# cd /var/
# ls -la —context
 drwxr-xr-x. root root system_u:object_r:var_t:s0 .
 dr-xr-xr-x. root root system_u:object_r:root_t:s0 ..
 drwxr-xr-x. root root system_u:object_r:var_t:s0 cache
 drwxr-xr-x. root root system_u:object_r:var_t:s0 db
 drwxr-xr-x. root root system_u:object_r:var_t:s0 empty
 drwxr-xr-x. root root system_u:object_r:games_data_t:s0 games
 drwxr-xr-x. root root system_u:object_r:var_lib_t:s0 lib
 drwxr-xr-x. root root system_u:object_r:var_t:s0 local
 drwxrwxr-x. root lock system_u:object_r:var_lock_t:s0 lock
 drwxr-xr-x. root root system_u:object_r:var_log_t:s0 log
 lrwxrwxrwx. root root system_u:object_r:mail_spool_t:s0 mail -> spool/mail
 drwxr-xr-x. root root system_u:object_r:var_t:s0 nis
 drwxr-xr-x. root root system_u:object_r:var_t:s0 opt
 drwxr-xr-x. root root system_u:object_r:var_t:s0 preserve
 drwxr-xr-x. root root system_u:object_r:var_run_t:s0 run
 drwxr-xr-x. root root system_u:object_r:var_spool_t:s0 spool
 drwxrwxrwt. root root system_u:object_r:tmp_t:s0 tmp
 drwxr-xr-x. apache apache unconfined_u:object_r:var_t:s0 trac
 drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 www
 drwxr-xr-x. root root system_u:object_r:var_yp_t:s0 yp
# chcon system_u:object_r:httpd_sys_content_t:s0 /var/trac -R
# ls -la —context
 drwxr-xr-x. root root system_u:object_r:var_t:s0 .
 dr-xr-xr-x. root root system_u:object_r:root_t:s0 ..
 drwxr-xr-x. root root system_u:object_r:var_t:s0 cache
 drwxr-xr-x. root root system_u:object_r:var_t:s0 db
 drwxr-xr-x. root root system_u:object_r:var_t:s0 empty
 drwxr-xr-x. root root system_u:object_r:games_data_t:s0 games
 drwxr-xr-x. root root system_u:object_r:var_lib_t:s0 lib
 drwxr-xr-x. root root system_u:object_r:var_t:s0 local
 drwxrwxr-x. root lock system_u:object_r:var_lock_t:s0 lock
 drwxr-xr-x. root root system_u:object_r:var_log_t:s0 log
 lrwxrwxrwx. root root system_u:object_r:mail_spool_t:s0 mail -> spool/mail
 drwxr-xr-x. root root system_u:object_r:var_t:s0 nis
 drwxr-xr-x. root root system_u:object_r:var_t:s0 opt
 drwxr-xr-x. root root system_u:object_r:var_t:s0 preserve
 drwxr-xr-x. root root system_u:object_r:var_run_t:s0 run
 drwxr-xr-x. root root system_u:object_r:var_spool_t:s0 spool
 drwxrwxrwt. root root system_u:object_r:tmp_t:s0 tmp
 drwxr-xr-x. apache apache system_u:object_r:httpd_sys_content_t:s0 trac
 drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 www
 drwxr-xr-x. root root system_u:object_r:var_yp_t:s0 yp

OS起動時の自動起動追加

# chkconfig httpd on
# chkconfig mysqld on

再起動

# /etc/init.d/mysqld restart
# /etc/init.d/httpd restart



以上で、 http://yourServerAddress/trac に行くと、Digest認証画面が出てきて、認証が通ればプロジェクト一覧が出てくると思います。



チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)