まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

CentOS 環境設定備忘録シリーズ(?)、今回は Apache HTTPD の巻。
CentOS の導入は済んでいるものとします。詳しい手順はこちらを参照。

Apache HTTPD の導入自体は簡単すぎるので、今回は SSL アクセスを有効にするところまでを紹介、オレオレ SSL だけど。

まずはターミナルを開いて、 Apache HTTPD をサクっとインストール:
# yum install httpd

これで完了、簡単すぎ。後は実行すれば HTTPD サーバーとして使えるけど、その前に SSL の設定も紹介します。


SSL(Secure Sockets Layer) 情報を暗号化して送受信するプロトコル。これを HTTP で使う場合のプロトコルが HTTPS です。個人情報やクレジットカード情報を送受信する場合、その中身を暗号化して途中経路で読めなくする場合などに使います。利用者のレベルでは HTTP や HTTPS の違いをほとんど意識することはありません。

一方、サーバー側には SSL の鍵や証明書を使うことでこの暗号化を実現します。単にサーバーそのものを SSL 対応することに加え、この鍵や証明書を用意しておく必要があります。商用サイトであれば専門の機関から有償で発行してもらうもののですが、検証目的であれば OpenSSL を使って自分で(無償で)用意することもできます。

余談ですが、自分で用意した場合は自分の作った証明書で自分を信じこませて認証する、という意味で「オレオレ SSL」とか「オレオレ証明書」とか言われます。いずれこれらも「母さん、助けてSSL」とかって呼ばれるようになるんでしょうかね(笑)。

で、その自分で SSL を有効にするまでの手順も紹介します。まずは OpenSSL と、Apache HTTPD に SSL 機能を付けるための mod_ssl モジュールを導入します(既に導入済みかもしれません、その場合は気にせず先に進んでください):
# yum install openssl
# yum install mod_ssl

まずはオレオレ証明書を作ります。その前提として秘密鍵と公開鍵のペアが必要なので、順序としては (1)秘密鍵を作って、(2)公開鍵を作って、(3)証明書を作る という流れになります。この順に説明します。なお以下ではこれらのファイルを /etc/httpd/conf/ 以下に作成する前提で進めますが、別ディレクトリでも構いません。その場合は適宜読み替えてください。

最初に /etc/httpd/conf に移って、(1)秘密鍵を server.key というファイル名で作成します:
# cd /etc/httpd/conf
# openssl genrsa -aes128 1024 > server.key

Generating RSA private key, 1024 bit long modulus
..................++++++
..........................................++++++
e is 65537 (0x10001)
Enter pass phrase:(パスフレーズ)
Verifying - Enter pass phrase:(同じパスフレーズ)

この例では 128 ビットの AES 方式で暗号化した 1024 ビットの秘密鍵を作っています。途中でパスフレーズ(パスワード)を聞かれるので適当なパスワードを指定し、直後に確認のため同じパスワードを入力します。これで秘密鍵が完成です。

次にこの秘密鍵ファイルとペアになる (2)公開鍵ファイルを server.csr というファイル名で作成します:
# openssl req -new -key server.key > server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Chiba
Locality Name (eg, city) []:Funabashi
Organization Name (eg, company) [Internet Widgits Pty Ltd]:空白
Organizational Unit Name (eg, section) []:空白
Common Name (eg, YOUR name) []:192.168.XXX.XXX
Email Address []:空白

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:空白
An optional company name []:空白

2文字の国識別コードには JP を指定、都道府県、市区町村を指定、それ以外は Common Name 欄以外は空白のままで大丈夫です。
注意点として、Common Name には実際に HTTPS として運用する際にブラウザから指定するアドレスを入力することになります。 https://www.xxx.com/ といったサーバー名でアクセスするのであれば xxx.com を、https://192.168.XXX.XXX/ といった IP アドレスでアクセスするのであれば IP アドレスを指定してください。

最後にこの秘密鍵と公開鍵を使って (3)証明書ファイルを server.crt というファイル名で作成します:
# openssl x509 -in server.csr -days 36500 -req -signkey server.key > server.crt
Signature ok
subject=/C=JP/ST=Chiba/L=Funabashi/O=Default Company Ltd/CN=192.168.XXX.XXX
Getting Private key
Enter pass phrase for server.key:(上記で指定したパスフレーズ)


この場合では X.509 形式の証明書ファイルを、有効期間36500日(約100年)の指定で作成しています。これだけ指定しておけば自分の開発期間中はまあ大丈夫でしょうw。


これでデジタル証明書の作成までできましたが、このまま使うと Apache HTTPD の起動時にパスフレーズの入力を求められることになります。開発期間中はそれでもいいのかもしれませんが、実際の運用はサーバーの起動と同時に HTTPD サーバーも起動させたりするので、ここまでの作業が完了していればパスフレーズは不要と言えます。パスフレーズは以下のコマンドで解除することができるので、一応紹介しておきます:
# mv server.key server.key.bak
# openssl rsa -in server.key.bak > server.key
Enter pass phrase for server.key.back:パスフレーズ
writing RSA key

デジタル鍵/証明書が用意できたので、実際にこれを使って HTTPS を構築します。mod_ssl をインストールしたタイミングで /etc/httpd/conf.d/ssl.conf が作られているはずなので、このファイルを編集して今作成したこれらのファイルを指定します:
# vi /etc/httpd/conf.d/ssl.conf

  :
<VirtualHost _default_:443>
  ErrorLog logs/ssl_error_log
  TransferLog logs/ssl_access_log
  LogLevel warn
  SSLEngine on
  SSLProtocol all -SSLv2
  SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
  SSLCertificateFile /etc/httpd/conf/server.crt
  SSLCertificateKeyFile /etc/httpd/conf/server.key
  <Files ~ "\.(cgi|shtml|phtml|php3?)$">
    :
  </Files>
</VirtualHost>

これで準備は整いました。では HTTP(S) サーバーを起動します:
# /etc/init.d/httpd start

起動後、ウェブブラウザを使ってこのサーバーにアクセスしてみます。まずは普通に http://XXX.XXX.XXX.XXX でアクセス。特に何もしていなければ Apache HTTPD のデフォルトページが表示されるはずです:
2014020801


次に同じアドレスに対して https://XXX.XXX.XXX.XXX でアクセスを試みます。SSL でのアクセスになります。証明書がオレオレなので、「信頼できないよ(第三者が保証するものではないよ)」と警告されます。
2014020802


ブラウザによってこの後の承認方法が異なりますが、Chrome であれば「このまま続行」ボタン、FireFox であれば「危険性を理解した上で接続するには」 - 「例外を追加」 - 「セキュリティ例外を承認」 を順に選択することで先に進むことができて、本来のトップページが HTTPS プロトコルで見ることができます。
2014020803












CentOS 環境設定備忘録シリーズ(?)、今回は PHP の巻。
CentOS の導入は済んでいるものとします。詳しい手順はこちらを参照。

で、開発言語というか、プラットフォームとしての PHP を導入します。基本は yum コマンドで必要なモジュールをインストールして、最後に動作設定、というパターンです。


まずは PHP モジュールをインストール。最初の php は必須、php-mbstring は日本語(というか UTF-8)使うならオススメ。残りは必要に応じて:

# yum install php
# yum install php-mbstring(マルチバイト文字モジュール)
# yum install php-mysql(MySQLモジュール)
# yum install php-pgsql(PostgreSQLモジュール)
# yum install php-devel(PHP開発用、ソースのコンパイルとかするなら)


導入後に /etc/php.ini を編集して PHP の環境設定をします。好みや用途に応じて色んなパターンがありますが、僕の場合は基本こんな感じにしてます(書いてないパラメータはデフォルトのままで):
output_buffering = Off
expose_php = Off
display_errors = Off
log_errors = On
error_log = syslog
register_globals = Off
register_long_arrays = Off
magic_quotes_gpc = Off
default_charset = "UTF-8"
enable_dl = Off
allow_url_fopen = Off
session.use_only_cookies = 1
session.hash_function = 1
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none

楽ちん~。

 


昨年、転職しました。
サラリーマンの年末調整(ここでは確定申告と各種控除と両方まとめてこの言い方とします)は、普通は転職先の会社でやってくれるのですが、退職/入社のタイミングとか、退職元/転職先の対応スピード感とかよってはそのための書類の入手に時間がかかり、転職先での年末調整申し込み期限に間に合わないことがあります。そういう人はこの時期に自分で税務署に行って申告する必要があるわけです:
http://www.nta.go.jp/tetsuzuki/shinkoku/shotoku/tokushu/


大好きなお金のためとはいえ、貴重な休みを使うことになるので一発で終わらせたいもの。というわけで事前準備をしっかりしておきましょう。そんな自分用備忘録です。
zei



まず所得税の年末調整をする必要があります。これは1年間の中で複数の会社から給与をもらっていた場合にその調整を行う必要があるものです。必要な書類としてはこれら全ての会社から出してもらう源泉徴収票です。例えば6月末に退職して、1カ月休んで、8月から新しい会社になった場合であれば(1)1月~6月分の源泉徴収票を転職前の会社から、(2)8月~12月分の源泉徴収票を転職後の会社から出してもらって、それぞれ入手する必要があります。3箇所以上で働いた(給料をもらった)場合も同様で、全ての会社の源泉徴収票を取り寄せておく必要があります。

次に保険などの控除の還付。これは「年末調整書類に貼り付けるやつ」です。保険の控除証明とかのあれ。年末調整を行ってない場合は貼り付けてないはずなのでそれを用意、と。

また、還付金の振り込先を指定するために預金通帳が必要になるようです。そうなの?と思ったけど、確認したらそう言われました。


2014/02/23 追記
通帳までは必要ありませんでしたが、振込口座を指定できるようにしておく必要があります。


そして印鑑、これも忘れずに、とのこと。


2014/02/23 追記
印鑑は使った記憶なし。


これらを持って自分が住んでいる自治体の税務署へ。基本平日しか開いてませんが、この時期は週末も開いていたり、週末の特定の日のみ開いていたりするようです。自分の税務署がどこにあって、いつ開いているのか、あらかじめ確認しておくのがいいと思います。

で税務署へ行って、確定申告書Aの用紙をもらって記入、だそうですよ。

こんなもんでいいのかな? 実際に申請して、追記次項があったらこのブログエントリに書き足します。

2014/03/14 追記
無事還付手続きが行われました。

 

このページのトップヘ