Translate

ラベル CentOS の投稿を表示しています。 すべての投稿を表示
ラベル CentOS の投稿を表示しています。 すべての投稿を表示

2017年2月22日水曜日

プライベート認証局によるCA証明書つきSSL証明書の発行について

ここでは自身が管理するプライベート認証局を使ってSSL証明書にCA証明書を発行する方法について説明します。

プライベート認証局の構築方法については別記の「プライベート認証のルート証明書の作成について」を参考にしてください。

■KEYファイルの生成

秘密鍵と公開鍵のセットを生成します。
openssl genrsa -aes256 -out server.key 2048

CSRファイルの生成

KEYファイルを元にコモンネームを含んだ公開鍵を生成します。
openssl req -new -key server.key -out server.csr 

■CRTファイルの生成

CA証明書付きのSSL証明書を生成します。
openssl ca -in server.csr -out server.crt \
-keyfile /etc/pki/CA/private/cakey.pem \
-cert /etc/pki/CA/cacert.pem \
-config /etc/pki/tls/openssl-ca.cnf

■秘密鍵の復号化

最後におまけで秘密鍵の複合化についても記載します。
openssl rsa -in server.key -out server.dec.key

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

今回は開発用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年1月26日月曜日

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

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

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

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

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

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

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

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

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

グローバルサイン

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
    

2015年1月9日金曜日

SVNにユーザーを追加する方法

Subversionに新しいユーザーを追加する方法についての説明です。

次のコマンドを使ってユーザーを追加します。
htpasswd -m [パスワードファイル] [ユーザー名]
パスワードファイル:httpのBasic認証のパスワードが保存されているパス
ユーザー名:新しく追加するパスワード

■パスワードファイルの位置を確認するには

パスワードが保存されている位置は/etc/httpd/conf.d/subversion.conf内にある以下の位置を確認します。
<Location /repos>
   <LimitExcept GET PROPFIND OPTIONS REPORT>

      [中略]

      AuthUserFile /etc/httpd/conf/.htpasswd   <---ここを確認する

      [中略]

   </LimitExcept>
</Location>

2014年2月28日金曜日

SVNサーバに新しいリポジトリを作成する

SVNサーバに新たに空のリポジトリを作成する方法についてのメモです。

説明

 SVNのリポジトリを追加するにはsvnadminコマンドを使います。コマンドの詳しい説明に関してはここでは割愛します。
 svnadmin create REPOS_PATH
 リポジトリのパスにはapacheのフォルダを指定しますが、通常"/var/www/svn/"か”/usr/local/svn/”内の任意のフォルダになると思われます。この辺りは設定によって変化します。
 svnadminによってリポジトリフォルダを追加した後、そのフォルダをapacheが使用できるようにパーミッションを変更する必要があります。

小技

  別の方法として、SVNを追加する際にapacheユーザーを偽装することで、パーミッションを変更する作業が必要なくなります。
 ただしこの方法を使おうと思とルート権限で実行する必要があります。

 以上がSVNの作成方法になります。以下に”/var/www/svn/sample”というリポジトリを追加する例を説明します。

方法その1

 フォルダを作成してからパーミッションを変更する方法
svnadmin create /var/www/svn/sample
chmod -R apache: /var/www/svn/sample

方法その2

 ユーザーを偽装してフォルダを作成する方法
sudo -u apache svnadmin create /var/www/svn/sample