Wednesday, June 11, 2014

Alfresco 4.2のMicrosoft Office連携(オンライン編集機能)をSSL化する

こんにちは。最近めっきり運動不足なおおたにです。

あまりに運動不足なので久々にテニスを再開しようと考えていたところ、なかなか興味深いガジェットがソニーから出てました。SSE-TN1というものです。ざっくり言うと、テニスのプレーをリアルタイムに分析してくれるセンサーです。ラケットのグリップエンドに付けて使うもので、ショットの種類を始め、インパクトの位置やラケット速度、ボールの回転や速度などを分析してくれます。さらに、動画を撮影しながら分析することで、ショットの質を動画と併せて確認できるとか。詳しくはこちらとかでレビューされてますので参考までに。

ただし、このセンサーに対応しているラケットがYONEXの一部モデルのみというところには注意が必要です。ちょうど道具を一通り買い換えようと思っていたところだったのですが、色々試打した結果他社のラケットを買ってしまいました(まあはやりのBabolatです)。これからラケットを買おうという方、そしてガジェット好きな方は是非ご一考を。

というわけで、今回はAlfresco 4.2のMicrosoft Office連携(オンライン編集)機能について書いていこうと思います。


AlfrescoのMicrosoft Office連携とは?なぜSSL化するのか?


以前、「AlfrescoのMicrosoft Office連携(オンライン編集機能)を試してみよう」という記事でAlfrescoのMicrosoft Office連携について説明しましたので、詳しくはそちらをご覧ください。この設定を行うと、Alfresco上のファイルをMicrosoft Officeで直接開き、編集、保存できるようになります。

この機能は、AlfrescoがSharePointの振りをすることで実現しているのですが、この記事では1つ問題を棚上げしていました。それは、以下のどちらかを行わないとMicrosoft Officeでファイルを開けないというところで、後者についてしか説明していませんでした。
  • 通信をSSL化する
  • クライアントPCのレジストリをいじる
前者の方がより好ましい解決方法ですので、以下ではこのSSL化の方法について説明していきます。


どこをSSL化するのか?


これは、Microsoft OfficeとAlfresco間の接続をSSL化するということになります。AlfrescoはVTIモジュールと呼ばれるSharePointのフリをするためのモジュールを用意しており、Microsoft Officeとの通信はこのVTIモジュールが担当します。VTIモジュールは、Alfrescoサーバ上のjettyにホストされ、デフォルト7070番で通信します(もちろん変更可能です)。SSL化すべきはこのVTIモジュールということです。


SSLの設定を行う


以下、具体的な手順を説明するのですが、まずはMicrosoft Office連携機能をインストールしましょう。手順は「AlfrescoのMicrosoft Office連携(オンライン編集機能)を試してみよう」を参考にしてください。

準備ができたら早速SSLの設定を行っていきましょう。今回はテスト用の自己署名証明書を作成しますが、実運用に向けては正統な証明書を準備する必要があります。

1. 自己署名証明書を作成する

まずはSSL用の自己署名証明書(いわゆるオレオレ証明書)を作成します。以下のコマンドを実行します(以下はWindowsでのものですが、Linuxも同様です)。キーストアのパスやパスワードは適宜変更してください。
> %JAVA_HOME%/bin/keytool.exe -genkeypair -alias alfresco -keystore D:/alfresco/alf_data/keystore/vti.ssl.keystore -storepass changeit -keypass changeit  -keyalg RSA -validity 365 -keysize 2048 -storetype JKS


2. VTIの設定を変更する

続いて、VTIモジュールの設定を変更します。以下の2つのファイルを弄る必要があります。まずはalfresco-global.propertiesに以下の3プロパティを設定します。vti.server.ssl.keystoreは先ほど作成したキーストアのパス、vti.server.ssl.passwordは先ほど指定したパスワードを設定します。

<tomcat_dir>/shared/classes/alfresco-global.properties
vti.server.external.protocol=https
vti.server.ssl.keystore=D:/alfresco/alf_data/keystore/vti.ssl.keystore
vti.server.ssl.password=changeit

続いて、vti-context.xmlというVTIモジュールの定義ファイルを修正します。vtiServerConnectorのbean定義が2つあるので、non-SSL用をコメントアウトし、SSL用のものを有効にします。

<tomcat_dir>/webapps/alfresco/WEB-INF/classes/alfresco/module/org.alfresco.module.vti/context/vti-context.xml
<!-- Use this Connector for plain text (non-SSL) communications -->
<!--
<bean id="vtiServerConnector" class="org.mortbay.jetty.bio.SocketConnector">
    <property name="port">
         <value>${vti.server.port}</value>
    </property>
    <property name="headerBufferSize">
         <value>32768</value>
    </property>
</bean>
-->
<!-- Use this Connector instead for SSL communications -->
<!-- You will need to set the location of the KeyStore holding your -->
<!--  server certificate, along with the KeyStore password -->
<!-- You should also update the vti.server.protocol property to https -->
<bean id="vtiServerConnector" class="org.mortbay.jetty.security.SslSocketConnector">
    <property name="port">
         <value>${vti.server.port}</value>
    </property>
    <property name="headerBufferSize">
         <value>32768</value>
    </property>
    <property name="maxIdleTime">
         <value>30000</value>
    </property>
    <property name="keystore">
         <value>${vti.server.ssl.keystore}</value>
    </property>
    <property name="keyPassword">
         <value>${vti.server.ssl.password}</value>
    </property>
    <property name="password">
         <value>${vti.server.ssl.password}</value>
    </property>
    <property name="keystoreType">
         <value>JCEKS</value>
    </property>
</bean>


早速試してみよう


以上の設定が終わったら、Alfrescoを再起動して http://localhost:8080/share/ にアクセスしてみましょう。もしレジストリを非SSLでの認証を許可するために弄ってある人は、元に戻してPCを再起動しておきます。あとは「AlfrescoのMicrosoft Office連携(オンライン編集機能)を試してみよう」の記事にある手順でオンライン編集を実行し、「このWebサーバーへのアクセスは規定で無効になっています。...」のダイアログが表示されずにMicrosoft Officeでファイルを開ければ設定成功です。

もちろん本番環境で利用する際は自己署名証明書では問題なので、適切な証明書を適用する必要があります。また、更に詳しい説明はAlfresco Documentationを参照してください。

今回の説明は以上になります。是非VTIモジュールのSSL化に挑戦し、快適なオンライン編集ライフを楽しんでください(って何だ!)

No comments: