s1r-Jの技術メモ

とあるSEの個人的な技術メモ

Oracle OpenJDK15でOWASP ZAPが起動しない

『体系的に学ぶ 安全なWebアプリケーションの作り方 第2版』では、OWASP ZAPというアプリを使って学習を進めていきます。
インストールしたあと、ZAP.exeをダブルクリックしても起動しないことがありました。

原因と対処方法をまとめておきます。

OWASP ZAP

OWASP ZAPとは、フリー(Apache 2.0)のWebアプリケーション脆弱性診断ツールのこと。
Javaで作成されており、実行するにはJREが必要となります。

下記サイトからダウンロードできます。

HTTPリクエスト・レスポンスを取得して確認したり、セッションを操作したり、諸々おこなうことができます。

ZAP.exeから起動できない

本題です。

実行環境

先に実施した環境について記載しておきます。

コマンドプロンプトjava --verisonを実行すると以下のように出力結果が得られました。

openjdk version "15.0.1" 2020-10-20
OpenJDK Runtime Environment (build 15.0.1+9-18)
OpenJDK 64-Bit Server VM (build 15.0.1+9-18, mixed mode, sharing)

エラー発生

OWASP ZAPをインストールすると、デスクトップにZAP.exeのショートカットが作成されるのでダブルクリックします。
すると、以下のようなエラーが発生しました。

起動エラー

バージョン1.8.0のJREが必要とのことですが、使っているPCにはJDK15を入れてあるため問題ないはずです。

原因

調べたところそこそこ知られている問題らしく、GitHubのissueや記事を見つけることができました。

内容としては、ZAPを起動するにはJavaSoft(Oracle) registry keysを設定しないといけないようです。

JavaSoft(Oracle) registry keys

Oracle JDKで使用しているレジストリ・キーのことらしい。

Microsoft WindowsプラットフォームでのJDKおよびJREのインストール によると以下のレジストリ・キーのことのようです。

HKEY_LOCAL_MACHINE\Software\JavaSoft\JRE HKEY_LOCAL_MACHINE\Software\JavaSoft\JRE\<version> HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Web Start\

Oracle OpenJDKでは設定されないようです。

レジストリエディタを開いて(Win + Rでregeditを入力)、確認したところ私の環境では設定されていませんでした。

exeから起動するときはWindowsの機能を利用するため、レジストリ・キーが設定されていないとダメということかもしれません。

解決策

AdoptOpenJDKをインストールする

OpenJDKにはいくつかのディストリビューションがあります。AdoptOpenJDKはその中のひとつになります。

AdoptOpenJDKではインストール時にJavaSoft(Oracle) registry keysを書き換えることができるようです。

以下のような記事を見つけました。

この方法ではせっかくインストールしたOracle OpenJDKをやめて、AdoptOpenJDKをインストールすることになります。もったいなかったので、次の方法を実行しました。

batファイルを作成する

ZAP.exeをダブルクリックで起動するのではなく、jarから起動するbatファイルを作成して起動します。

ZAPをインストールしたフォルダ(例: C:\Program Files\OWASP\Zed Attack Proxy)に以下のようなbatファイルを作成します。

このbatファイルをダブルクリックすることで、ZAPを起動することができるようになりました。

batファイルのショートカットをデスクトップに配置してあげれば使いやすいでしょう。


WSL2にDocker Desktopをインストールする

今回はWSL2にDocker Desktopをインストールして、actをインストールする準備を完了させます。

Docker公式サイトのガイド通りで問題なかったです。いくつかスクショを貼っておきます。

WSL2のインストールは、こちらを参照してください。

参考

手順

事前準備

先にWSL2をインストールしておきましょう。

ダウンロード

Windows用のインストールをダウンロードします。

インストール

ダウンロードが完了したら、インストーラを起動します。

とりあえず両方ともチェックをつけて、進めます。

インストーラ

どんどんインストールが進んでいきます。

インストール中1

インストール中2

インストールが完了しました。

インストール完了

ここまで進んだら、PCを再起動します。

Dockerの起動確認

デスクトップ上にDocker Desktopのアイコンがあるので、ダブルクリックで起動します。

docker run -d -p 80:80 docker/getting-startedを実行するように、と指示されているのでWSLを起動してコマンドを入力します。

$ docker run -d -p 80:80 docker/getting-started
Unable to find image 'docker/getting-started:latest' locally
latest: Pulling from docker/getting-started
188c0c94c7c5: Pull complete
617561f33ec6: Pull complete
7d856acdaa9c: Pull complete
a0d3c6e28e6d: Pull complete
af69a9b963c8: Pull complete
0739f3815ad8: Pull complete
7c7b75d0baf8: Pull complete
Digest: sha256:b821569034e3b5fae03b40e64a866017067f3bf17effe185b782bdbf02179528
Status: Downloaded newer image for docker/getting-started:latest

上記のような出力があって、Dockder Desktopでは起動させたコンテナが表示されます。

Docker Desktop

Docker Desktop上からコンテナの起動・停止、コマンドの発行等をおこなえるようです。

WSL2へのバージョンアップ

参考になる記事はたくさんあるけれど、いちおう書き残しておきます。

背景

個人的な事情

GitHub Actionsをローカル環境でテストできるactには、 Docker(Docker Desktop)が必要だったので入れようとしたら、WSL2が必要だったという話。

WSL2と1の比較

WSL 2 と WSL 1 の比較 | Microsoft Docs

うーん、わからない。わざわざWSL1を使う理由はなさそうなのでバージョンアップします。
Linux版のDockerをきちんとインストールできるようになる、のようなメリットを聞いたことがあります。 上述のactのインストールには必要なのでインストールします。

参考文献

以下の2つの記事を読めば全て書いてあります。
(今書いているこの記事は要らないのでは???)

  1. Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs
  2. WSL2導入|WinアップデートからWSL2を既定にするまでのスクショ - Qiita

手順

参考文献の1のほうを基本的には見ていきます。
スクショが見たくなったら2を確認します。前提条件が揃っていなくて、準備が必要な場合も2に記載されています。

Windows Insiderではないので、Manual Installation Stepsの方で実施します。

前提条件

WSLのバージョン

そもそも今使っているWSLのバージョンを確認するには以下のコマンドを実行します。

PS C:\Windows\system32> wsl --list --verbose
  NAME      STATE           VERSION
* Ubuntu    Running         2

入っているディストリビューションとそのWSLのバージョンが書いてあります。 この場合はUbuntuが入っており、そのWSLのバージョンは2であることがわかります。

Windowsのバージョン

WSL2にはWindowsのバージョンが2004である必要があります。

バージョンの確認方法は以下の通り。

Win + Rで「ファイル名を指定して実行」を開き、winverと入力。
バージョンが表示されます。

バージョンがこれ以前の場合には、Windows Updateをおこないます。

Windows Subsystem for Linuxの有効化

日本語だと「LinuxWindowsサブシステム」となっているWindowsの機能の有効化をおこないます。 以下のコマンドではなくとも コントロールパネル > プログラムと機能 > Windowsの機能の有効化または無効化 から変更することもできます。

Linux用Windowsサブシステムの有効化

コマンドを実行するときにはPowerShellを管理者権限で実行する必要があります。

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

コントロールパネルで変更した場合でもコマンドで変更した場合でも、PCを再起動します。

仮想マシン プラットフォームの有効化

さらにWindowsの機能の「仮想マシン プラットフォーム」を有効化します。「LinuxWindowsサブシステム」と同じくコントロールパネルから変更することもできます。

仮想マシン プラットフォームの有効化

また、同じくコマンドを実行することもでき、PowerShellを管理者権限で実行する必要があります。

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

Linuxカーネルの更新

Linuxカーネルを更新します。
下記のMicrosoft公式サイト(「手順 4 - Linux カーネル更新プログラム パッケージをダウンロードする」)からmsiファイルをダウンロードして実行します。

Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs

WSL2を既定にする

PowerShellを起動して下記のコマンドを実行します。

wsl --set-default-version 2

Linuxディストリビューションをインストールする

WSL1のさいに何かしらのディストリビューションを入れていればこの部分は飛ばします。

ここまでの手順をおこなって新規にインストールした場合には、WSL2で動くことになります。

Microsoft Storeを開いて、好みのディストリビューションをインストールします。
とりあえず、Ubuntuあたりがよさそう。

インストールしたディストリビューションのバージョンが気になれば、以下のコマンドをPowerShellで実行して確認できます。

PS C:\Windows\system32> wsl --list --verbose
  NAME      STATE           VERSION
* Ubuntu    Running         2

既にインストールしているディストリビューションをWSL2にする

既に何かしらのディストリビューションをインストールしている場合には、以下のコマンドをPowerShellで実行してバージョンをWSL2にします。

wsl --set-version <distribution name> <versionNumber>

<distribution name>にはディストリビューションの名称にします。例:Ubuntu
<versionNumber>は今回WSL2を使うようにしたいので2にします。

ディストリビューションの名称ですが、下記のコマンドの出力結果NAMEにあたります。

PS C:\Windows\system32> wsl --list --verbose
  NAME      STATE           VERSION
* Ubuntu    Running         2

終わりに

今回私が実行したときには上述の流れで問題は発生しませんでした。
よくあるトラブルシューティングMicrosoft公式サイトに記載されています。

やはり公式サイトが最強ですね。

閲覧してるサイトのマークダウン記法リンクを取得するブックマークレット

背景

マークダウンでメモを書くときに、Webブラウザで見ているサイトのリンクを貼り付けたいときがあります。
ページのタイトルとURLをマークダウン記法のリンクにして取得するためのブックマークレットをメモしておきます。

ソースコード

ソースコードブックマークレットでmarkdown用のリンクを生成する - Qiitaから丸パクリしました。

以下のソースコードWebブラウザのブックマーク編集でURLの部分に貼り付けます。 名前は何でも構いませんが、わかりやすく「copy md link」のようにしておきましょう。

リンクを取得したいサイトに移動し、作成したブックマークを押すとクリップボードにリンクが取得できています。

例:

[ブックマークレットでmarkdown用のリンクを生成する - Qiita](https://qiita.com/kyo_nanba/items/81d81164360347fb3732)

PC(Windows10)の環境構築2021

PCを買い替えたり、会社で新しいPCが支給されたりして環境構築をすることがあったので、自分用にこの機会にまとめておきます。

Windows10の環境です。

Windows10(2021年1月)

Webブラウザ

まずはブラウザを用意。

基本的にはChromeを使います。スマホとブックマークを共有したり、開いているページを共有したりできて便利。
ブラウザの違いやセッションが気になるときは、別のブラウザで確認したいのでFirefoxを使います。

あと、Vivaldi
ブックマークの管理や広告ブロッカー、スクショが最初からついていて便利。
なによりデザインがおしゃれ。

問題なのは使っているユーザが少ないので、アプリケーションによってはサポートされていないことがある。
例えば、Microsoft TeamsはVivaldiで開けなかったと記憶している。

Chrome拡張機能

OctotreeはGitHubリポジトリを見やすくする拡張機能

Talend API TesterはHTTPメソッド、URL、クエリを設定することでAPIを実行できます。

FireShotはWebブラウザのページ全体をスクショとるための拡張機能です。画質はあまりよくなかったと思います。
スクショをとれる拡張機能は多くありますが、どれがよいのかは検討していないです。

Git関連

諸々のコマンド(GitコマンドとかLinuxコマンド)を実行したり、秘密鍵を作成したりできるのでGit Bashを入れます。

コミットログをGUIで確認したり、Gitコマンドを実行せずに使いたかったので、Gitクライアントを入れます。
SourceTreeやGitKrakenもあるけれど、あんまり検討していないです。GitKrakenは無料だと機能が制限されるのが嫌だったので使っていないです。

エディタ・IDE

Mery

公式サイト

普通のテキストエディタサクラエディタでもいいけれど、機能が多すぎてビビって使うことができなかったのでインストールしました。
プラグインを入れて機能を増やしたり、テーマを変えたりしてカスタマイズできます。

プラグイン:半透明プラグイン - MeryWiki

ウインドウの背景が透明になるので、他のファイルを比較・参照しながらの編集が楽になります。

サクラエディタ

公式サイト

Grepなど機能が豊富なので、Meryで困ったときに使っています。

Typora

公式サイト

マークダウン用のエディタ。VS Codeでもいいけれど、ただのマークダウンファイルを書くだけなのにVS Codeを開くのはちょっと重いかなーっていうときに便利。
テキスト編集とWYSIMYGのどちらでも編集できて、Ctrl + /ですぐに切り替えられます。 また、表の入力の支援やPDF出力などもできます。

1つ懸念があって、Typoraは無償のオープンソースではないことです。 現在公開されているのはベータ版であり、正式版ではライセンスを購入が必要になる可能性があります。

End User License Agreementより引用

“Full version” the license for the Software for the term specified on the webpage of the store where You purchase the license, or in any applicable agreement concerning the purchase of the license (as stand-alone product or as part of a subscription) to Use the Software. This license is when Typora reaches v1.0.

VS Code

Visual Studio Codeさま。
拡張機能なども豊富で使いやすいです。

VS Code拡張機能

  • Bracket Pair Color
  • indent-rainbow
  • Output Colorizer
  • ESLint
  • Prettier
  • GitLens
  • Git History
  • Remote Development
  • Rainbow CSV
  • Live Server

VS Code設定

考え中...

ESLintとPrettierあたりの設定も考えたいですね。

Eclipse

言わずとしれたIDEです。Javaを書くときに使っています。
IntelliJと比べたことはないのでどっちが使いやすいのかはわからないです。

テーマは暗めのテーマを選択します。

フォーマッタとそれに対応したチェックスタイルを設定します。

ファイル操作

QTTabBar

公式サイト

ファイルエクスプローラです。
Windows標準だと複数開きたいときにWebブラウザのようにタブで開けず、別ウインドウになるので扱いにくいです。

タブで開けること、お気に入りにしたフォルダへのアクセスができること、ファイルの名称がまとめておこなえること等の機能があります。

似たようなアプリは他にもありますが、どれがよいのか詳細に検討したことはないです。

PDF-XChange Editor

公式サイト

PDFの閲覧と編集をおこなうことができるエディタです。
Adobeでも良いけれど、画像に変換したりコメントを追加したりできて便利だったので使っています。
あと検索機能が便利で、今開いているファイルだけではなく、フォルダ内のPDFファイル全部に対して検索もできます。

CLaunch

公式サイト

マウスをくるくる回すとウインドウが開かれてアプリを起動できます。

入力支援

Google日本語

公式サイト

CLCL

公式サイト

クリップボードの履歴を保存できます。
Windows10であればWin + Vクリップボード履歴がありますが、それよりも使いやすいです。

Source Han Code JP

公式サイト

フォントはSource Han Code JP(源ノ角ゴシック Code)を使います。
MeryVS CodeEclipseに設定します。

実行環境

Pythonの環境はとりあえずanacondaにしているけれど、開発環境をきちんと考えるなら別の選択をするかもしれません。

yarnはWSLにほうに入れています。

RubyはJekyllを使うために入れました。

Windows Subsystem for Linux

WSL2にアップデートして、Ubuntuを入れています。

Mintty

公式サイト

WSLのコンソールを便利で高機能な「wsltty」に置き換える:Tech TIPS - @IT

ターミナルエミュレータ

その他

プロキシ関連

  • cntlm

公式サイト

認証付きのプロキシを超えるために利用します。
Windows版だとよく落ちて安定しないので、WSLに入れて動かすほうがよいです。

メモ

  • Joplin

公式サイト

マークダウンで記述できるメモアプリ。
PC、AndroidiOSとあってDropboxを使って同期できるのも便利です。

オフィス

LibreOffice

Microsoft Officeがあればそれで充分ですが、入れていないときには使います。
OpenOfficeよりも活発に開発されているイメージなので、Libreにしました。

設定

.bashrc設定

考え中...

WSLのaliasは確認したところ、以下のようになっていました。

alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'

まとめ

2021年1月時点では以上のような感じです。

VS Codeでの開発をかなりやるようになったので、設定については今後考えていきたいです。

また、Linuxのターミナルの使いやすさを向上させるアプリや設定も知りたいと思っています。

プライバシーポリシー

個人情報の利用目的

当ブログでは、お問い合わせや記事へのコメントの際、名前やメールアドレス等の個人情報を入力いただく場合がございます。 取得した個人情報は、お問い合わせに対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、これらの目的以外では利用いたしません。

アクセス解析ツールについて

当ブログでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。このGoogleアナリティクスはトラフィックデータの収集のためにクッキー(Cookie)を使用しております。トラフィックデータは匿名で収集されており、個人を特定するものではありません。

GOOGLE のサービスを使用するサイトやアプリから収集した情報の GOOGLE による使用

広告について

当ブログでは、第三者配信の広告サービス(楽天アフィリエイト)を利用しています。

免責事項

当ブログからのリンクやバナーなどで移動したサイトで提供される情報、サービス等について一切の責任を負いません。

また当ブログのコンテンツ・情報について、できる限り正確な情報を提供するように努めておりますが、正確性や安全性を保証するものではありません。情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

著作権について

当ブログで掲載している文章や画像などにつきましては、無断転載することを禁止します。 ただし、ソースコードについては商用・非商用を問わず自由に利用していただいて構いません。

当ブログは著作権や肖像権の侵害を目的としたものではありません。著作権や肖像権に関して問題がございましたら、お問い合わせフォームよりご連絡ください。迅速に対応いたします。

お問い合わせ

お問い合わせは、以下のお問い合わせフォームよりご連絡ください。

お問い合わせフォーム