Tuesday, August 21, 2012

SolrのSSL証明書が有効期限切れになっていたら

Alfresco4.0から検索システムとして採用されているSolrですが、2012年8月16日を以てSolrに同梱されていたSSL証明書が有効期限切れになったとのアナウンスが出ています。
 Important: SSL certs for SOLR in Alfresco 4 expire this week 

もしお使いのAlfresco4.0系で以下のようなエラーがログに出続けていたら、証明書の有効期限切れです。
Caused by: java.security.cert.CertificateExpiredException: NotAfter: Fri Aug 17 21:04:11 JST 2012

影響としては、ログインや画面操作等は可能なものの、検索機能が機能しなくなり、タグなども正常に表示されなくなります。
お盆開けでAlfrescoを見てみたら急におかしくなっていた、なんて方もいらっしゃるかもしれません。( 筆者はそうでした :-) )


新しい証明書に差し替えたバージョンのAlfresco(4.0.2に対しては4.0.2.9、4.0.dに対しては4.0.e)がすでにリリースされていますが、ここでは既存のAlfrescoのまま証明書だけ新しく生成する方法をご紹介します。
※下記Wikiページか、またはEnterprise版をご利用の方はSupport Portalの方にも情報&生成用のスクリプトがあります。
Generating new SSL certificates


Solr用SSL証明書の生成手順
※ OSはWindows/Linux/Macいずれでも構いません。筆者は普段Mac上のAlfrescoを弄っていますが、Macでは以下の3.で躓いたので、参考にしていただければと思います。
 
0.前提条件として、Solrは展開済み、keystoreディレクトリも作成済みとします。

1.バージョン4.0.eのAlfresco一式またはSolr単体をDLして解凍します。

2.解凍したSolrの中にあるgenerate_keystores.sh(Linuxの場合)という証明書生成用スクリプトを、alf_data/keystore/直下に置きます。
 Windowsの場合はgenerate_keystores.batを置いてください。

3.スクリプトの冒頭にある変数ALFRESCO_HOMEを、Alfrescoをインストールしているフォルダパスに指定します(e.g. /opt/alfresco-4.0.0)。
Alfrescoをインストーラで入れたまま各種フォルダパスを特に変更していなければ設定はこれだけですが、変更していた場合は念のため他のフォルダパス変数も確認してください。

特にMac版インストーラによるフォルダ構成ではLinux版のそれと違って$ALFRESCO_HOME/javaフォルダが存在しておらず、そのままではスクリプトからkeytoolコマンドを実行できません。Macでの対処法としては、JDKが入っていてkeytoolコマンドが単独で動作することを確認したら、スクリプト上の"$JAVA_HOME/bin/keytool"をすべて"keytool"に置き換えればOKです。

 4. Tomcat、DBを停止してスクリプトを実行します。
※スクリプトを実行すると自動的にTomcatもDBも停止するので注意してください。

実行すると、

[root@localhost ~]# sh /opt/alfresco-4.0.0/alf_data/keystore/generate_keystores.sh

Using CATALINA_BASE:   /opt/alfresco-4.0.0/tomcat

Using CATALINA_HOME:   /opt/alfresco-4.0.0/tomcat

Using CATALINA_TMPDIR: /opt/alfresco-4.0.0/tomcat/temp

Using JRE_HOME:        /opt/alfresco-4.0.0/java

Using CLASSPATH:       /opt/alfresco-4.0.0/tomcat/bin/bootstrap.jar

/opt/alfresco-4.0.0/tomcat/scripts/ctl.sh : tomcat stopped

/opt/alfresco-4.0.0/postgresql/scripts/ctl.sh : postgresql stopped

証明書がファイル </root/ssl.repo.crt> に保存されました。

証明書がファイル </root/ssl.repo.client.crt> に保存されました。

証明書がキーストアに追加されました。

証明書がキーストアに追加されました。

証明書がキーストアに追加されました。

cp: cannot stat `/opt/alfresco-4.0.0/alf_data/solr/templates/test/conf/ssl.repo.client.keystore': そのようなファイルやディレクトリはありません

cp: cannot stat `/opt/alfresco-4.0.0/alf_data/solr/templates/test/conf/ssl.repo.client.truststore': そのようなファイルやディレクトリはありません

cp: cannot create regular file `/opt/alfresco-4.0.0/alf_data/solr/templates/test/conf/ssl.repo.client.keystore': そのようなファイルやディレクトリはありません

cp: cannot create regular file `/opt/alfresco-4.0.0/alf_data/solr/templates/test/conf/ssl.repo.client.truststore': そのようなファイルやディレクトリはありません

Certificate update complete

Please ensure that you set dir.keystore=/opt/alfresco-4.0.0/alf_data/keystore in alfresco-global.properties


となって、証明書が生成されます。
 /opt/alfresco-4.0.0/alf_data/solr/templates/test/conf下のファイルがありませんというエラーが出ていますが、これらは4.0.2以降のものなので気にしなくてよいようです。

以上で、証明書が生成されて検索機能が元通り使えるようになります。

(文責: hayashi@aegif)

No comments: