Translate

2017年2月22日水曜日

プライベート認証のルート証明書の作成について

今回は開発用WEBサーバや社内向けのWEBサービスなどに利用できる、プライベート認証局の構築方法について説明します。

構築環境はCentOS7で、OpenSSLは予めインストールされているものとします。

■CA用のコンフィグ作成

はじめにCA作成用にOpenSSLのコンフィグを作成します。
  1. 既存のコンフィグをコピー
  2. cp /etc/pki/tls/openssl.cnf /etc/pki/tls/openssl-ca.cnf
    
  3. コピーしたコンフィグを修正する
  4. nsCertType 以外は任意ですが付けておくと便利です。
    default_days = 1095
    
    [ req ]
    default_bits = 2048
    default_md = sha256
    
    [ req_distinguished_name ]
    countryName_default = JP
    stateOrProvinceName_default = Kyoto
    localityName_default = Kyoto
    0.organizationName_default = SITZ Co.Ltd.
    emailAddress_default = system@sitz.co.jp
    
    # nsCertType
    nsCertType = sslCA, emailCA
    

■CAの生成

新たに作ったコンフィグを使ってCAを生成します。
SSLEAY_CONFIG="-config /etc/pki/tls/openssl-ca.cnf" \
/etc/pki/tls/misc/CA -newca

■インポート用ファイルに変換

WindowsなどにインポートしやすいようにDERファイルに変換します。
openssl x509 -in /etc/pki/CA/cacert.pem -inform pem \
-out /etc/pki/CA/cacert.der -outform der

2017年2月13日月曜日

JAVAでテスト用SSL証明書を許可する

 Tomcatを使ってTLS接続のサーバ間通信をしようとすると、テスト用サーバの証明書が認証局に登録されていなくってSSLExceptionが出ることがあります。
 その際に、JAVAの信頼済み証明書にテスト用のSSL証明書を登録することで回避する方法について記録します。

■症状

JAVAを使ったHTTPS通信でテストサーバに繋ぐと、SSLExceptionがでる。

■回避方法

ネットを調べていると信頼済み証明書に追加する方法と、証明書の検証をしない方法とがありましたが、後者の場合本運用にそのまま移行できないので、ここでは前者の信頼済み証明書に追加する方法について説明します。

■信頼済み証明書に登録する

  1. tomcatが使用しているjavaのパスを調査し、cacertsを探す
  2. cacertsの場所は通常以下のような場所にあります。
    • Windowsの場合
    • C:\Program Files\java\jre<バージョン番号>\lib\security
      
    • CentOSの場合
    • /etc/pki/ca-trust/extracted/java/
      
  3. keytoolを使ってcacertsに証明書(CRT)を追加する
  4. keytool -importcert -v -trustcacerts -file <証明書ファイル> -keystore <信頼済み証明書ファイル>
    
    証明書ファイル: /etc/httpd/ssl/server.crt
    信頼済み証明書ファイル: /etc/pki/ca-trust/extracted/java/cacerts
    各ファイルが上記の場所に保存されている場合
    keytool -importcert -v -trustcacerts -file /etc/httpd/ssl/server.crt -keystore /etc/pki/ca-trust/extracted/java/cacerts [Enter]
    キーストアのパスワードを入力してください:  
    所有者: CN=www.test.jp, O=Company, L=Kyoto, ST=Kyoto, C=jp
    発行者: CN=www.test.jp, O=Company, L=Kyoto, ST=Kyoto, C=jp
    シリアル番号: ****************
    有効期間の開始日: Mon Feb 13 14:17:42 JST 2017終了日: Thu Feb 11 14:17:42 JST 2027
    証明書のフィンガプリント:
             MD5:  **:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**
             SHA1: **:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**
             SHA256: **:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**
             署名アルゴリズム名: SHA512withRSA
             バージョン: 1
    この証明書を信頼しますか。 [いいえ]:  y
    証明書がキーストアに追加されました
    [/etc/pki/ca-trust/extracted/java/cacertsを格納中]
    
    これは、CentOSの例になりますが、Windowsの場合適所修正してください。

■Eclipseの場合

Eclipseでデバッグしている場合は設定のサーバでどのフォルダのJAVAを使用しているか確認することが出来ます。

2015年10月30日金曜日

WSUSのクリーンアップ

 今回はWSUSのデータベースの整理についての備忘録です。

 Windows Server Update Serviceの更新情報の管理はすべてデータベースで管理されています。DBは通常SQL Server Expressを使用して運用されますがここに問題があります。
 SQL Server Expressはスキーマごとに容量が4GBまでと制限されています。WSUSを数年も運用し続けるとこのデータベースはすぐに4GBを超えてしまいます。
 4GBを超えるとWSUSがデータベースを使用するたびに容量制限のログが記録されていき、これに気付かず放置し続けると1か月もすれば数十GBというログファイルが生成されます。
 ある日気づくとサーバのシステムドライブが容量不足になっていろいろな問題が発生…ということになります。
クリーンアップで解決できない場合はこちらも参考にしてみてください。
WSUSの「接続エラー」の対処方法について

■WSUS DBのインデックス整理

 データベースのインデックスを再構成することでサイズを若干減らすことができます。
 また、次の「WSUSのクリーンアップ」を行う前にもDBのインデックスを整理しておくことをお勧めします。サーバのクリーンアップを行ったことのない環境では特に作業に時間がかかるようで、インデックスを整理しておくことである程度改善できるようです。

WSUS DB インデックスの再構成の手順について

■WSUSのクリーンアップ

 対処方法としてはWSUSのオプションから「サーバー クリーンアップ ウィザード」を実行することです。

更新プログラムのクリーンアップについて

■WSUSの再構築

 最終手段としてはWSUSの再構築を行うことです。上記リンク先の「更新プログラムのクリーンアップについて」で記載されていますが、製品とクラスを再設定してもデータベースの容量は削減されないようです。
 この場合、再構築して製品とクラスを適正に設定することで、データベースを新たに作り直すことでサイズを減らすことができるようです。

■対象

OS: Windows Server 2008R2
Version: WSUS 3.0

2015年9月7日月曜日

SyntaxHighlighterの使い方

さまざまなサイトで紹介されているのでいまさらですが、すぐに使い方を忘れてしまうのでブログの趣旨通り備忘録として記録しておきます。

準備

まずはHTMLのヘッダに次のような一文を追加します。
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/>
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeEclipse.css' rel='stylesheet' type='text/css'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushBash.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCpp.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js' type='text/javascript'/>
<script language='javascript' type='text/javascript'>
 SyntaxHighlighter.config.bloggerMode = true;
 SyntaxHighlighter.all();
</script>
例の場合、bash、C++、Java、XMLのコードに対応できます。

使用方法

コード表示にしたいところを<pre>タグで囲います。あとはclass属性で”brush: ○○;"と定義するとそれぞれのコードに最適化された表示になります。

使用例

<pre class="brush: java; tab-size: 4;">
class A {
  private int a;
  public A(int a) {
    this.a = a;
  }
};
</pre>
class A {
  private int a;
  public A(int a) {
    this.a = a;
  }
};

参考資料 

ソースコード表示

2015年1月26日月曜日

SSL証明書の内容を確認する方法

作成済みのSSL証明書の内容を確認する方法について、様のほぼ引用ですが、次の通りです。

■証明書ファイルの内容を確認

openssl x509 -text -noout -in [ファイル名]

■秘密鍵ファイルの内容を確認

openssl rsa -text -noout -in [ファイル名]

■CSRファイルの内容を確認

openssl req -text -noout -in [ファイル名]

■参考にさせていただいたサイト

グローバルサイン

2015年1月23日金曜日

SSL証明書の更新について

セキュリティの確保されたホームページを管理していると、最低でも年に1回この作業をしないといけません。
そこでSSL証明書の更新について記録しておきます。

■要件

ここで紹介するSSL証明書の要件は次のようなものです。必要に応じて変更してください。
  • キーペアの名前: private.key
  • 公開鍵の名前: public.csr
  • キーペアの種類と鍵長: RSA2048
  • 秘密鍵の暗号化方法: AES256
  • 署名のハッシュ方法: SHA256

■作業内容

  • 鍵の生成
  • 認証局へ登録する
  • 認証局の署名付きSSL証明書を受け取る

■鍵の生成

まずはじめに証明書を発行してもらう鍵を生成する必要があります。実際に証明書を発行してもらうのは公開鍵のほうだけです。
  1. キーペアを生成する
  2. openssl genrsa -aes256 -out private.key 2048
  3. 生成したキーペアから公開鍵を生成する
  4. openssl req -new -sha256 -key private.key -out public.csr

■認証局へ登録する

VeriSignやGlobalSignに登録して証明書(認証局の署名付きの公開鍵)を発行してもらいます。
ここでは当社が利用しているGlobalSignの登録方法について説明します。
  1. 認証局のサイトの更新画面を開く
  2. GlobalSignのサイトにログインし「現在更新可能な証明書」をクリックします。
  3. CSRを入力する
  4. サービスの内容、技術担当者情報などを入力し、CSR入力画面まで進みます。
    「CSRを利用する」にチェックをつけて、先ほど生成したpublic.csr内のテキストを赤い枠内に入力します。

■認証局の署名付きSSL証明書を受け取る

あとは登録完了を待つのみです。

2015年1月21日水曜日

SVNリビジョンのログメッセージを変更できるようにする

SVNリビジョンのログメッセージを後から編集できるようにする方法について説明します。

■症状

SVNの初期設定で後からログメッセージを編集をしようとすると、次のようなエラーが表示されます。
 

■説明

リポジトリのルートパスにある"hooks"フォルダに"pre-revprop-change"というコマンドを作成する必要があります。
実際にはその中で変更を受け付けるかなどのコマンドを書く必要があるようですが、幸いメッセージの変更を受け付けるコマンドが書かれたテンプレートが、同じフォルダ内にあるのでこれをコピーします。

■設定方法

  1. リポジトリのルートパスにある"hooks"に移動する
  2. cd /var/www/svn/<リポジトリ名>/hooks
    
  3. ファイルを複製し所有権を"apache"にして実行権限(744)を付与する
  4. sudo -u apache cp pre-revprop-change.tmpl pre-revprop-change
    chmod 744 pre-revprop-change