以前紹介したRedmineのPGP/MIMEプラグインですが、日本語化されていなかったので、ja.ymlを作成して日本語化しました。

実は仕事でもこのプラグイン使いたくて、日本語化された状態にしたかった、という事情もあります。

難しいコードを書くことはできませんが、日本語化のデータくらいなら作成できました。

まずはクローンした自分のGithubでmasterにコミットし、さらにクローン元であるfreedomofpressさんにプルリクを出しました。

自力で出した初プルリクですw すこしでも、OSSコミュニティに貢献できたら幸いです。

 

 

 

 

前回の記事で、PGP/MIMEプラグインのサーバ設定を紹介したので、今日はプラグインを有効化して各ユーザの設定を紹介します。

プラグインを有効化

このプラグインを有効化したいプロジェクトの設定画面でOpenpgpプラグインモジュールを有効化します

各ユーザの設定

各ユーザのPGP設定画面

各ユーザのログイン後、右上のところにPGPというメニューが表示されるので、その画面に移動します。

PGP設定画面は以下のようになっています。自分のPGP公開鍵を設定する部分がありますので、PCにインストールしてKleopatra(鍵管理ツール)にて生成した自分のPGP公開鍵をExportして、この画面で設定します。また、Redmineサーバに設定されているPGP公開鍵を参照することができますので、そのPGP公開鍵全体をコピーしてテキストファイルに保存します。

RedmineサーバのPGP公開鍵をKleopatraにインポートして信頼する

さきほどテキストファイルに保存したRedmineサーバのPGP公開鍵をKleopatraにインポートします。PGP鍵を有効にするには'Certified'する必要があり、Fingerprintを確認するようにメッセージがでますので、Redmineに表示されているFingerprintを確認するようにメッセージが表示されます。Fingerprintを確認したら、「署名」します。これでRedmineサーバのPGP鍵を信頼する設定ができました。

 

テストメールを送ってみる

Redmineにチケットを作成して、担当者を設定するなどしてテストメールを送ってみます。ちゃんと信頼されたメールアドレスから受信したメールであって、暗号化されているメールを読むことができました。なお、PGP公開鍵を登録していないユーザには、本文をフィルタして更新通知だけをメールするようにプラグインで設定することもできます。

さいごに

これで「RedmineにPGP/MIMEプラグインを入れてみた」を終わります。今回の一覧の記事ではRedmineからの通知メールをPGP/MIME化するプラグインを取り扱いましたが、実際いれてみると、PGP/MIMEってもう十分使いやすいレベルになっているとおもいます。ひと昔前は、Outlookなどのメールクライアントで対応していないのが普及しない理由、と書かれている記事がありましたが、今はOutlookでも使えました。ちまたでは、パスワード付きZIPファイルをメールで送ることをPPAPなどと揶揄されているようですね。早くPGP/MIMEが普及すればいいのにとおもいます。

 

この記事がRedmineからの通知メールを暗号化しようという人の参考になれば幸いです。

関連記事

RedmineにPGP/MIMEプラグインを入れてみた(その1)

RedmineにPGP/MIMEプラグインを入れてみた(その2)

 

 

 

 

システム管理者によるRedmine設定

前回の記事で、PGP/MIMEプラグインをRedmineにインストールするところまで紹介したので、今日はその設定です。

Redmine側の鍵を生成

プラグインのREADMEには、既存の鍵を使用するやり方と、新規の鍵を生成するやり方が載っていますが、今回は新規の鍵を生成することにします。やり方は以下のようにします。(passphraseのところは、ご自分の環境で独自のものを使用してください)

$cd /path/to/redmine

$RAILS_ENV="production" bundle exec rake redmine:generate_redmine_pgpkey secret="passphrase"

プラグインのREADMEには書いてないのですが、Redmineが実行されているユーザーで鍵の生成を実行する必要があります。rootで鍵を生成すると、生成時にはエラーは出ないのですが、後でうまくいかなくて嵌りました_| ̄|○

実際にやってみると、以下のような感じです。実行完了には結構時間がかかります。私の環境の場合、約2時間かかりました。

この操作により、Redmine側の秘密鍵と公開鍵が生成されます。ここで生成される鍵長は2048bit(固定値)のようです。

# su - apache

bash-4.2$ RAILS_ENV="production" bundle exec rake redmine:generate_redmine_pgpkey secret="******"

... PGP key parameters built.

... PGP key generated and saved into gpg key ring.

... saved generated key to db.

 PGP key successfully generated. Exiting.

メール受信するクライアント側の設定

gpg4winをPCにインストールしてKleopatra(鍵管理ツール)を起動 

自分側の鍵を生成したり、管理したりするためにgpg4winというクライアントソフトをインストールします。インストールするにはこちらのブログなどが参考になります。ダウンロードする際に寄付を求められます。Paypal/Bitcoin/銀行振込で寄付することができます。$0を選択すると、寄付せずにダウンロードすることもできます。

インストールするモジュールはデフォルトだと以下のような感じ。メーラーにOutlookを使っているのであれば、GpgOLを入れるようにします。

インストールを完了後、Kleopatoraという鍵管理ツールを起動します。

自分の鍵を生成 

Kleopatoraにより、New Key Pairをクリックして、自分の鍵ペア(秘密鍵と公開鍵)を生成します。名前とメールアドレスを入力します。
詳細設定で、暗号化方式や鍵長、鍵の使用目的、有効期限を設定できます。デフォルトでは以下のようになっています。
 

(ここで、鍵の有効期限を設定しています。その1の記事で、プラグイン作者の署名が期限切れのエラーがでたのは、このように鍵に有効期限が設定してあったからだと思われます)
暗号化方式 RSA
鍵長 3072bit
鍵の使用目的 暗号化、署名
有効期限 作成日から2年間

ここでは、デフォルトのままで作成することにしました。

鍵ペアの生成は数分で完了し、以下のようにKleopatoraから確認することができるようになります。

次回に続く・・・

トラブルシューティング

Redmine側のキー生成でエラー

この記事を書くために、いろいろ実験をしたのですが、Redmine側のキーを生成しようとしたときに以下のようなエラーが出たことがありました。 

# RAILS_ENV="production" bundle exec rake redmine:generate_redmine_pgpkey secret="passphrase"
... removed old key from db.
rake aborted!
EOFError: EOFError 

 これは、すでにgpgリングが登録されていたためでした。以下のように鍵情報を削除すると、鍵生成に成功しました。

-bash-4.2$ gpg --delete-secret-key redmine@*****.com
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.


sec  2048R/9E130D4A 2020-12-09 Redmine Server <redmine@quastom.com>

Delete this key from the keyring? (y/N) y
This is a secret key! - really delete? (y/N) y

-bash-4.2$ gpg --delete-key matsutani******@******.com
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.


pub  3072R/D050BDEC 2020-12-08 Hidehisa Matsutani <matsutani.hidehisa@gmail.com>

Delete this key from the keyring? (y/N) y 
-bash-4.2$ gpg --list-keys
gpg: checking the trustdb
gpg: no ultimately trusted keys found

関連記事

RedmineにPGP/MIMEプラグインを入れてみた(その1)

RedmineにPGP/MIMEプラグインを入れてみた(その3)

はじめに

RedmineにPGP/MIMEプラグインを入れて通知メールの暗号化に成功したので紹介します。Redmineでメールの暗号化で検索すると、STARTTLSやSMTPs、POP3sなどがヒットするのですが、これらの方式はメールサーバが対応していないと使えないですし、メール配送の途中経路は必ずしも暗号化される保証はないですね。その点、S/MIMEかPGP/MIMEであれば、END-ENDで暗号化されますので途中経路を気にする必要がありません。S/MIMEは、現在redmine.orgの#15309にチケット化されていますが、現時点ではまだ実装が進んでいないようです。PGP/MIMEはプラグインとして公開していただいているものがありましたのでこれを使ってみることにします。実際に使ってみようとすると、いくつか嵌りどころがありましたので、この記事で紹介しますね。
 
(この記事は、Redmine アドベントカレンダー2020の11日目の記事です)

環境

Redmineの環境(PGP/MIMEプラグインのインストール前)

Environment:
  Redmine version                4.1.1.stable.19900
  Ruby version                   2.6.5-p114 (2019-10-01) [x86_64-linux]
  Rails version                  5.2.4.2
  Environment                    production
  Database adapter               PostgreSQL
  Mailer queue                   ActiveJob::QueueAdapters::AsyncAdapter
  Mailer delivery                smtp
SCM:
  Subversion                     1.7.14
  Git                            1.8.3.1
  Filesystem                     
Redmine plugins:
  redmine_theme_changer          0.4.0
  view_customize                 2.7.0 

インストールするプラグイン

本家のC3Sのプラグインは2015年以降更新がなくRedmine4.1に対応していないので、freedomofpressさんのfork版を使いました。

プラグインをインストールする

1.ディレクトリを移動する

 ここは迷うことなく、以下のように実行ですね。私の場合はrootでRedmineをインストールしているので、rootユーザで以下のように実行しました。(パスは読み替えてくださいね)

# cd /path/to/redmine/plugins

2.プラグインをクローンする

ここで、プラグインのインストール指示では、

$git clone https://github.com/C3S/redmine_openpgp openpgp

となっているのですが、freedomofpressさんのフォークを使うので以下のようにします。リポジトリの名前”redmine_openpgp”のままではなく、openpgpという名前でcloneしないといけないところ、注意しないといけないですね。
# git clone https://github.com/freedomofpress/redmine_openpgp openpgp

remote: Enumerating objects: 342, done.
remote: Total 342 (delta 0), reused 0 (delta 0), pack-reused 342
Receiving objects: 100% (342/342), 94.97 KiB | 0 bytes/s, done.
Resolving deltas: 100% (167/167), done.

3.署名確認のためのPGPキーをインポートする

$git show pgp | gpg --import

となっています。ただ、カレントディレクトリは/path/to/redmine/pluginsですのでcloneしたディレクトリに移動しないといけません。

# cd openpgp
# git show pgp | gpg --import
gpg: key 1C9182F8: public key "Alexander Blum <ablum@uos.de>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
gpg: no ultimately trusted keys found

 4.署名を確認する

$git tag --verify 1.0

となっています。実行してみるとエラーでます。 署名が2015年に作成されたものなので、期限が切れているようです。ここは気にせずに進めることにします。

 # git tag --verify 1.0
object a22a9beb9079a4b413cfd5704c5bb5500a05262f
type commit
tag 1.0
tagger Alexander Blum <alexander.blum@c3s.cc> 1441337250 +0200

release version 1.0
gpg: Signature made Fri 04 Sep 2015 12:27:30 PM JST using RSA key ID 1C9182F8
gpg: Good signature from "Alexander Blum <ablum@uos.de>"
gpg:                 aka "Alexander Blum <a.blum@free-reality.net>"
gpg:                 aka "Alexander Blum (C3S) <alexander.blum@c3s.cc>"
gpg:                 aka "Alexander Blum <a.blum@comlot.de>"
gpg: Note: This key has expired!
Primary key fingerprint: 43AA 9302 3596 C83C 452E  63BB FB6A CC7A 1C91 82F8
error: could not verify the tag '1.0'

 

5.現在のリリースタグに移動

$git checkout tags/1.0

 となっています。ん?1.0は古いやん。これをチェックアウトしたらデグレしてしまいますので実行しません。

6.Redmineのルートディレクトリに戻る

これは指示どおり実行します。
 # cd /path/to/redmine/

 7.gemをインストールします

以下のように必要なgemがインストールされます

# bundle install

Don't run Bundler as root. Bundler can ask for sudo if it is needed, and

installing your bundle as root will break this application for all non-root users on this machine.

The dependency tzinfodata (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x64-mingw32, x86-mswin32. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x64-mingw32 x86-mswin32`.

The dependency ffi (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x64-mingw32, x86-mswin32. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x64-mingw32 x86-mswin32`.

Fetching gem metadata from https://rubygems.org/..........

Fetching gem metadata from https://rubygems.org/.

Resolving dependencies...

  ・

  ・

 8.データベースのマイグレーションをします

$RAILS_ENV=production bundle exec rake redmine:plugins:migrate

# RAILS_ENV=production bundle exec rake redmine:plugins:migrate

== 1 CreatePgpkeys: migrating ================================================

-- create_table(:pgpkeys)

  -> 0.0436s

== 1 CreatePgpkeys: migrated (0.0436s) ======================================== 

9.Redmineを再起動します

インストール指示には以下のように書かれていますが、自分の環境にあったやり方でRedmineを再起動します。

$sudo service apache2 restart

10.Redmineを実行しているユーザにsuします

インストール指示は以下のようになっています。

$su redmine

私の環境ではRedmineはapacheユーザで実行されています。 apacheはnologinユーザなので、ログインするときに-s /bin/bashオプションをつけます。apacheにsuしようとすると、apacheの実行シェルは/sbin/nologinになっていますのでsuすることができません。そこで、apacheユーザのshを通常の/bin/bashに変更します。 また、apacheユーザのホームディレクトリをapacheユーザの所有に変更し、apacheユーザになりました。
# chown -R apache.apache /usr/share/httpd

# su - apache -s /bin/bash

bash-4.2$ whoami

apache

11.gpgリングが作成されていることを確認する

以下の指示にしたがい、コマンドをうってみたら、新たなキーリングが作成された、というようなメッセージが表示されました。次に進みます。

$gpg --list-keys  

# gpg --list-keys
gpg: directory `/usr/share/httpd/.gnupg' created
gpg: new configuration file `/usr/share/httpd/.gnupg/gpg.conf' created
gpg: WARNING: options in `/usr/share/httpd/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/usr/share/httpd/.gnupg/pubring.gpg' created
gpg: /usr/share/httpd/.gnupg/trustdb.gpg: trustdb created

 

 12.Redmineを実行しているユーザのホームディレクトリにあるgpgリングのディレクトリの所有ユーザが正しいか確認する。

インストール指示は以下のようになっています。redmineユーザではなくapacheユーザに変更します。(10の手順でchown実行済みなので、すでに所有者はapacheになっていますけど)

$chown redmine ~/.gnupg

# chown apache.apache ~/.gnupg
# ls -l ~/.gnupg
total 28
-rw------- 1 apache apache 7680 Dec 11 02:43 gpg.conf
-rw------- 1 apache apache 6012 Dec 11 02:43 pubring.gpg
-rw------- 1 apache apache    0 Dec 11 02:43 secring.gpg
-rw------- 1 apache apache 1200 Dec 11 02:43 trustdb.gpg

 

 

関連記事

RedmineにPGP/MIMEプラグインを入れてみた(その2)

RedmineにPGP/MIMEプラグインを入れてみた(その3)

 

 

 





 

このブログではいろいろとログ、スクリプトやコードなどをきれいに表示したいと思った。

どうすればカッコイイ枠がつけられるんだろうとおもって調べたら、AmbEditorPlusというChrome拡張機能を発見。

フリープラグインの設定をするものや、手動でCSSの枠を挿入などのページも見つけたが、こちらの拡張機能を用いたほうが簡単なのでこれを使わせていただくことにした。

ChromeにAmbEditorPlusという拡張機能をインストールすると、以下のような編集用アイコンがAmebaの標準エディターに追加される。

 

ここで、「コード」のアイコンをクリックすると、以下のような枠を簡単に作れる。

直感的ですごく便利。プログラマー月島優さん、便利な拡張機能の公開をありがとうございます。

これから使わせていただきます。<m(__)m>

sample
[ec2-user]$ pwd
/home/ec2-user