Help us understand the problem. What is going on with this article?

owasp/zap2docker-stable WebSwingに日本語フォントを追加する

More than 1 year has passed since last update.

背景

Webサービス脆弱性診断ツールOWASP ZAPのAPI仕様を調べるために, まずは機能イメージを掴もうとWebUIを試してみたら日本語フォントが入ってなくて文字化けした. フォント追加の備忘録.

環境

  • HostOS: Debian GNU/Linux 8.11 (jessie)
  • Docker: version 17.05.0-ce, build 89658be
  • Docker compose: version 1.8.0-rc1, build 9bf6bc6
  • DockerImage: docker.io/owasp/zap2docker-stable:2.7.0

取りあえず動かしてみる

環境を汚したくない, もとい, 環境を汚したら掃除できるスキルが無いのでDocker. まずはOfficialのイメージを動かしてみる.

docker run -u zap -p 8080:8080 -p 8090:8090 -i owasp/zap2docker-stable zap-webswing.sh

docker-compseだとこんな感じ.

docker-compose.yml
version: '2'
services:

  # https://hub.docker.com/r/owasp/zap2docker-stable/
  zap:
    image: owasp/zap2docker-stable:2.7.0
    container_name: zap
    hostname: zap
    volumes:
#       - ./volumes/zap/home/zap:/home/zap
#       - ./volumes/zap/usr/share/fonts/truetype:/usr/share/fonts/truetype:rw
       - /etc/localtime:/etc/localtime:ro
    user: zap
    command: >
      zap-webswing.sh >
        -daemon -host 0.0.0.0 -port 8080 -port 8090 >
        -config api.disablekey=true >
        -config api.addrs.addr.name=.* >
        -config api.addrs.addr.regex=true
    networks:
      - default
    ports:
      - "8080:8080" #WebUI
      - "8090:8090" #Proxy
#    restart: always

networks:
  default:
    ipam:
      config:
        - subnet: 192.168.1.0/24
# docker-compose up -d zap

http://localhost:8080/?anonym=true&app=ZAP にアクセスする. もしくは, http://localhost:8080/ にアクセスして user = "admin", password = "pwd" でサインインしてZAPを選択する.
20181129_001.png

日本語へ切り替えてみる

Tools > Options > Language を開いて日本語を選択する. 見事に化けている.
20181129_002.png

Tools > Options > Display を開いてFont Name一覧を確認する. 日本語っぽいフォントがない. シナリオはいつもDejaVu.
20181129_003.png

フォント格納場所を調べてみる

WebUIで選択できたフォントが何処に格納されているか調べてみる. Linuxシステム構成は必要に迫られてピンポイントで詳しくなったりするから体系的には理解していない. なので力技!

# docker-compose exec --user root zap /bin/bash
root@zap:/zap#  find / -name "*DejaVu*"
/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Oblique.ttf
/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed-BoldItalic.ttf
/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf
/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Oblique.ttf
/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed.ttf
/usr/share/fonts/truetype/dejavu/DejaVuSerif-Italic.ttf
/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed-Bold.ttf
/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf
/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Bold.ttf
/usr/share/fonts/truetype/dejavu/DejaVuSerif-BoldItalic.ttf
/usr/share/fonts/truetype/dejavu/DejaVuSans-ExtraLight.ttf
/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed.ttf
/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-BoldOblique.ttf
/usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf
/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed-Italic.ttf
/usr/share/fonts/truetype/dejavu/DejaVuSans-Oblique.ttf
/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf
/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf
/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf
/usr/share/fonts/truetype/dejavu/DejaVuSansMono-BoldOblique.ttf
/usr/share/fonts/truetype/dejavu/DejaVuSans-BoldOblique.ttf
root@zap:/zap# 

ちなみにDockerImageのOSはUbuntu.

# docker-compose exec --user root zap /bin/bash
root@zap:/zap# cat /etc/issue
Ubuntu 16.04.3 LTS \n \l

root@zap:/zap# 

フォントを追加してみる

フォントに詳しくないので身近なOsakaを採用する. wget, unzipがイメージにインストールされていたのでそのまま活用する. ZAPの機能で使用するのかな?

# docker-compose exec --user root zap /bin/bash
root@zap:/zap# cd /usr/share/fonts/truetype/
root@zap:/usr/share/fonts/truetype# wget http://osaka.is.land.to/files/Osaka.zip
root@zap:/usr/share/fonts/truetype# unzip Osaka.zip 
root@zap:/usr/share/fonts/truetype# mkdir Osaka
root@zap:/usr/share/fonts/truetype# mv Osaka.ttc Osaka/
root@zap:/usr/share/fonts/truetype# rm Osaka.zip 
root@zap:/usr/share/fonts/truetype# exit
# 

OWASP ZAPコンテナを再起動する.

# docker-compose restart zap
Restarting zap ... done
# 

再度, 日本語に切り替えてみる

Tools > Options > Display を開いて日本語フォントを選択する.
20181129_004.png

Tools > Options > Language を開いて日本語を選択する.
20181129_005.png

再ログインする.
20181129_006.png
ちゃんちゃん.

所感

コンテナを消しちゃうと同じ作業を繰り返すのでvolumesオプションでフォントをディレクトリ共有すれば尚良. DejaVuを繰り返さない. 取り敢えず動かしてみるのdocker-cmpose.yml参照.
こんな感じでフィーリングでシステムファイルをいじっちゃうので, やり直しが簡単なDockerは必須! 失敗を許容できるって偉大! コンテナは人権!

参考文献

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away