Translate

2018年1月26日金曜日

PowerShellでクライアントのアプリケーション一覧を取得する

 多数のクライアントPCを管理していると、どこにどのアプリケーションをインストールしたか覚えていられなくなります。各部署の長さんがしっかり管理してくれてるといいんですが、適当に要望を上げるだけだから次第にどこに何がインストールされてるのかわからなくなっていきます。
 クライアント管理用のソフトウェアがあると簡単に解決できるのですが、これが結構高価なもので年間ライセンスで普通にクライアントPC数台買えるようなレベルだったりします。
 そこでPowerShellを使ってクライアントPCにインストールされているアプリケーションの一覧を取得する方法について説明します。

準備作業

 まずは準備作業として監理したいクライアントPCで、リモートからPowerShellが実行できるように設定する必要があります。
 クライアントPCの管理者モードのPowerShellで次のコマンドを実行するだけなんですが、1台ずつ実行していくのは結構大変です。
Enable-PSRemoting -Force
 そこで次のコマンドラインをGPOのスクリプトや、ウィルス検知ソフトの管理システムなどを使って一斉に実行させます。
powershell -command "& {Enable-PSRemoting -Force}"
 ※注意 リモートからPowerShellを実行できるようにすると、リモートからいろいろなことが実行できてしまいますので、セキュリティ上の検討をよく行ってから実行してください。

一覧の取得

 次に一覧を取得するには、PC上(サーバである必要はありません)でドメイン管理者の権限でPowerShellを起動します。
 立ち上げたPowerShellに次のコマンドを入力して実行します。[]はオプショナル、<>内は適所修正してください。
Invoke-Command -ComputerName <コンピュータ名1>[, <コンピュータ名2>] -ScriptBlock {
>> Get-WmiObject Win32_Product [-Filter "Name like '<アプリケーション名>'"]} |
>> Select-Object Name, PSComputerName |
>> Export-CSV -Path <出力先のパス> -Encoding Default
 例えば2台のPC(computer1、computer2)から名前に"Microsoft"が含まれるアプリケーションの一覧を取得して、"C:\test.csv"に出力する例は次の通りです。
Invoke-Command -ComputerName computer1, computer2 -ScriptBlock {
>> Get-WmiObject Win32_Product -Filter "Name like '%Microsoft%'"} |
>> Select-Object Name, PSComputerName |
>> Export-CSV -Path C:\test.csv -Encoding Default
 出力したデータはExcelで集計するなどするとどのPCに何がインストールされているかの一覧が簡単にできると思います。

コマンドの説明

各コマンドについて軽く触れておきます。

Enable-PSRemoting

PowerShellのリモート実行を有効にします。WinRMの実行やファイヤーウォールの例外設定などが実行されます。

Disable-PSRemoting

PowerShellのリモート実行を無効にします。Enable-PSRemotingを実行すると再起動しても無効化されませんので注意してください。

Invoke-Command

 1台以上のリモートPC上でPowerShellのコマンドを実行します。出力はコマンドを入力したPCに返されます。

Select-Object

出力する列を選択します。

Export-CSV

出力をCSV形式にして保存します。"-Encoding Default"を付けずに実行すると日本語が文字化けします。

2017年12月18日月曜日

GPOを使ったWindows10の管理について

 グループポリシーを使ってWindows 10を管理する際に注意する点について、現在わかっている範囲の注意点を記録します。

 Windows 7までのクライアントPCをGPOで管理していて、そのままWindows 10の管理に移行すると問題が発生することがあります。
 それらの項目とその影響について簡単にまとめています。同じく悩んでいる人の参考になれば幸いです。

影響のあるGPOの項目

  • 一時記憶された移動プロファイルのコピーを削除する
  • インターネット上のWindows Updateに接続しない
  • イントラネットのMicrosoft更新サービスの保存場所にある署名済み更新を許可する

■一時記憶された移動プロファイルのコピーを削除する

 移動プロファイルを使っているコンピュータでユーザーがログオフした際に、ローカルPCからプロファイルの情報を削除します。
 セキュリティのことを考えてクライアントPCに個人情報を残さないように、この項目を設定しているとはまることが多いです。

場所

コンピュータの構成 > ポリシー > 管理用テンプレート > Windowsコンポーネント > Windows Update

英語表記

Delete cached copies of roaming profiles

影響

  • Windowsストアが使えない
  • ストアアプリが使えない
  • ログインするたびにスタートメニューが初期化され、インストールしたアプリケーションのショートカットが消える

■インターネット上のWindows Updateに接続しない

 WSUSを使っていると下手にWindows Update上から更新プログラムをダウンロードされないように制限をかけることが多い項目と思われます。
 WSUSの製品と分類の説明を見ていると"Windows 10 Feature On Demand"が「オプション機能」に該当するというように説明されていますが、英文の別の記事内の説明ではWSUSはこの項目をサポートしていないと説明されています。

場所

コンピュータの構成 > ポリシー > 管理用テンプレート > システム > ユーザー プロファイル

英語表記

Do not connect to any Windows Update Internet locations

影響

  • アプリと機能内のオプション機能の管理で機能の追加できない
  • 開発者モードに変更できない

■イントラネットのMicrosoft更新サービスの保存場所にある署名済み更新を許可する

 WSUSを使っているとクライアントPCはイントラネット上のサーバから更新プログラムをダウンロードするため、この設定が必要かと思っていたら大間違いでした。
 この項目を有効にしていると署名が一致しないためダウンロードしたファイルが破棄されWindows Updateが失敗します。
 ちなみにWindows7までは問題なく成功するため原因がわかりにくいです。

場所

コンピュータの構成 > ポリシー > 管理用テンプレート > Windowsコンポーネント > Windows Update

英語表記

Allow signed updates from an intranet Microsoft update service location

影響

  • Windows Updateの更新プログラムのダウンロードに失敗する

2017年11月2日木曜日

Windows10でWSUSを使ったWindowsUpdateに失敗する

 WSUSを使って社内のクライアントのWindows Updateを管理していると、Windows7以前のコンピュータでは問題ないのに、Windows10(おそらくWindows8以降、未確認)では更新プログラムのダウンロードに失敗することがあります。

■原因

ダウンロードしたファイルの署名に問題がある。
Windows Updateのログを確認していると、上記のようなログが記録されています。(実際のログは記録をとっていないため失念しました)
通常、WSUSを使ってWindows Updateを管理する場合、GPOを使ってクライアントの設定を一括で変更していると思いますが、次の項目を有効にしている場合に問題が発生するようです。

■改善方法

GPOの次の項目を「無効」または「未構成」にする。
コンピュータの構成
  ポリシー
    管理テンプレート
      Windows コンポーネント
        Windows Update
          イントラネットのMicrosoft更新サービスの保存場所にある署名済み更新を許可する

■備考

 説明を読んでいるといかにも必要そうに見えるんですけど、有効にすると署名の判定で拒否されてダウンロードに失敗するようです。
 しかもWindows7では同じ設定でも問題なくダウンロードされるため有効にしていると原因を突き止めるのが難しくなっています。
 うまくいかない原因の一つと思われますので一度確認してみてください。

■その他

その他にも既存のGPO設定を使っていると、Windows 10で発生する問題について次の記事でまとめています。

2017年8月8日火曜日

Windows Updateが失敗する問題の対処法

 Windowsの機能拡張やセキュリティ更新などシステム管理には必須のWindows Updateですが、ごくまれに更新中に失敗すると何度やっても更新できなくなることがあります。
 これまでのMSP(個別の更新プログラム)なら、Microsoftカタログから更新プログラムをダウンロードしてきて手動で更新したり、DISMを使ってクリーンナップすることで大体問題が解決するのですが、最近良くWindows Updateで見かける「品質ロールアップ」は若干事情が違うようです。

■対処法

 Windowsの更新プログラムは通常MSPファイルが使用されますが、品質ロールアップではMSUファイルが使用されます。
 MSPファイルによる更新の場合は「DISM」を使ってから、再度Windows Updateを実行したり手動で更新プログラムをインストールすることで大体の問題が解決します。
 MSUファイルによる更新の場合は「システム更新準備ツール」を使って解決させます。

■DISMを使う

 更新プログラムがMSPファイルだった場合、DISMを使ってクリーンナップをした後にWindows Updateを再実行します。もしくは、手動で更新プログラムをインストールする方法もあります。
  1. コマンドプロンプトを起動する
  2. 管理者権限を使ってコマンドプロンプトを起動します。
  3. DISMを実行する
  4. DISM.exe /Online /Cleanup-image /Restorehealth
    
  5. SFCを実行する
  6. sfc /scannow
    
  7. 再度Windows Updateを実行
  8. 再度Windows Updateを実行します。もしくは、Microsoft Update カタログから更新プログラムをダウンロードして手動でインストールします。

■システム更新準備ツールを使う

 更新プログラムがMSUファイルだった場合、システム更新準備ツールを使って問題を解決します。
  1. システム更新準備ツールをインストール
  2. システム更新準備ツールをダウンロードしてインストールします。
  3. 更新プログラムのダウンロード
  4. Microsoft Update カタログから問題のある更新プログラム(*.msu)をダウンロードする。
  5. ファイルをコピーする
  6. 「%SYSTEMROOT%\CheckSUR\packages」ディレクトリを作成し、そこに更新プログラムをコピーします。
  7. システム更新準備ツールを実行する
  8. システム更新準備ツールを実行します。

※注意

 ここでの説明はかなり省略している部分があります。例えば、システム更新準備ツールを使った出順の場合、作業1の前に問題のある更新プログラムを特定する作業があります。
 上手くいかない場合は下記の参考資料をご覧ください。

■参考資料


MSPファイルとは

 MSI(Windows Installer)でインストールされたプログラムの一部もしくは全ての設定やファイルを、修正または更新されたものに書き換えるためのパッケージです。通常「修正プログラム」や「更新プログラム」などと呼ばれています。

MSUファイルとは

 簡単に説明すると複数の更新プログラムをひとつのファイルにまとめたもので、Windows Updateスタンドアロン インストーラーというプログラムに関連付けられています。
 詳しくはこちらをご覧ください。

Microsoft Update カタログ

Microsoft Update カタログを使うと、Windows Updateの更新プログラムをダウンロードして手動でインストールする事ができます。更新プログラムには通常「KB○○」という番号が振られていますので、これを使って検索することが出来ます。ちなみにKBは「Knowledge Base」の略です。

2017年8月1日火曜日

PowerShellを使って特定のプログラムがインストールされているPCを調べる

 多数のPCを管理しているとどのPCにどのプログラムがインストールされているか把握しきれなくなってきます。記録を残して管理をしていても、記入漏れが発生したり、ユーザー自身がインストールしていることも・・・。
 そこで今回はPowerShellを使って、特定のプログラムがインストールされているPCからメールを送信する方法について説明します。
 FlashPlayerなんて勝手にインストールされるくせに、アップデートされずセキュリティホールだらけの古いバージョンが放置されるなんて日常茶飯事なので・・・。

PowerShellのスクリプトファイルを作る

 適当なファイル名、例えば「CheckProgram.ps1」などでスクリプトファイルを作成します。

CheckProgram.ps1の内容

Param(
[string]$program
)

$value = (Get-WmiObject -Class Win32_Product | Select-Object Name, Version | Select-String $program)

if ($value -ne $null) {
    $subject = $program + "が検出されました。"
    $computer = $env:COMPUTERNAME
    $encoding = [System.Text.Encoding]::UTF8
    $body = "Computer: " + $computer + "`r`n" + $value

    Send-MailMessage -to "to@example.com" -from "from@example.com" -subject $subject -body $body -encoding $encoding -SmtpServer "mail.example.com"
}
 プログラムの名称に引数「-program」で指定した文字列を含む場合、そのコンピュータ名とプログラム名、バージョンが「to@example.com」にメールが送られるようになります。
 Send-MailMessageの引数「-to」「-from」「-SmtpServer」は適所変更してください。

GPOでタスクスケジュールに登録する

 上で作成したスクリプトをタスクスケジュールで実行させます。トリガーの設定は適当に設定してください。
 新しく操作を追加し、操作には「プログラムの開始」、「プログラム/スクリプト」「引数の追加(オプション)」には下記の内容を設定します。

プログラム/スクリプト

powershell

引数の追加(オプション)

-NoProfile -ExecutionPolicy Bypass "\\example\scripts\CheckProgram.ps1" -program "Flash Player"
"\\example\scripts\CheckProgram.ps1"はスクリプトを保存したフルパスを指定します。
引数「-program」の後ろ("Flash Player")を変えることで別のプログラムの監視も出来ます。

2017年7月14日金曜日

WSUSの「接続エラー」の対処方法について

 WSUSを運用していると管理画面に「接続エラー」が表示されることがあります。最初のうちは「サーバノードのリセット」を行えば、再度接続できるようになるのですがその状態を放置し続けるとそのうちリセットしても再接続できなるなってきます。
 これはWSUSの運用を続けることで無駄なデータが蓄積されていくことによるもので、データベースの容量制限やメモリ不足であったり、IISのメモリ不足などさまざまな要因が重なることでおきるようです。
 以前、このブログ内でも「WSUSのクリーンアップ」という題名で紹介しておりますが、今回はそれでも問題が解決しない場合の対処方法について説明します。

■原因

接続エラーの主な原因は次のようなものが在るようです。
  • DBのディスク容量不足によりDBの処理に失敗する。
  • DBのメモリ不足によりDBの処理に失敗する。
  • IISのメモリ不足によりIISがクラッシュする。

■基本的な対策

 この対策は主にDBのディスク容量不足に対するものです。MSのサポート曰く基本的な対策として定期的に行ったほうが良いようです。
 詳しい内容は「WSUSのクリーンアップ」をご覧ください。

■IISの上限メモリを増やす

IIS内のアプリケーション(WsusPool)のメモリ制限を4GBに増やす。 4GBに設定すればほぼ安定するようですが、それでも安定しない場合はより多く確保してください。
  1. IISマネージャを起動して左ペインのWSUSのサーバ内にある「アプリケーションプール」を選択します。
  2. 次に右ペインの「WsusPool」右クリックして「詳細設定」を選択して詳細設定を開きます。
  3. 詳細設定内の「プライベートメモリ制限(KB)」を4000000(4GB)に設定する。
  4. 「OK」ボタンを押して設定を反映させる。

■DBの上限メモリを増やす

SQL ServerもしくはWindows Internal Databaseの最小メモリを1GBに増やす。

SQL Serverの場合

SQL Serverの場合はSQL Server Management Studioを起動して、サーバのプロパティを開き、メモリ内の「最小サーバーメモリ(MB)」を1024MBに設定するだけです。

Windows Internal Databaseの場合

  1. 管理者権限でコマンドプロンプトを起動します。
  2. Windows Internal Databaseに接続します。

    WSUS 3.0 SP2 の場合

    sqlcmd -E -S \\.\pipe\mssql$microsoft##ssee\sql\query
    

    Windows Server 2012 / 2012 R2 WSUS の場合

    sqlcmd -E -S \\.\pipe\MICROSOFT##WID\tsql\query
    
  3. 次のSQLを実行します。
    EXEC sp_configure 'show advanced options',1
    GO
    Reconfigure
    GO
    EXEC sp_configure 'min server memory',1024
    GO
    Reconfigure
    GO
    
  4. 次のSQLを実行しrun_value(最小メモリ)が1GBに設定されたことを確認します。
    EXEC sp_configure 'min server memory'
    GO
    
    出力例)
    name                                minimum     maximum     config_value run_value
    ----------------------------------- ----------- ----------- ------------ -----------
    min server memory (MB)                        0  2147483647         1024        1024
    

参考資料

より詳しい資料はMSのサポートページをご覧ください。詳しく説明されています。

2017年4月20日木曜日

OpenSSLの証明書をTomcatのkeystoreに変換する

OpenSSLで作成したX509形式の証明書を、Tomcatの.keystoreに変換する方法について説明します。

変換は一旦OpenSSLを使ってPKCS12形式に変換してからkeyToolを使って.keystoreに変換します。

SSL証明書の変換

SSL証明書: server.crt
キーストア: server.keystore
openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12
keytool -importkeystore -srckeysotre server.p12 -srcstoretype PKCS12 -destkeystore server.keystore -deststoretype JKS

中間証明書付きSSL証明書の変換

SSL証明書: server.crt
中間証明書: ca.crt
キーストア: server.keystore
openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -certfile ca.crt
keytool -importkeystore -srckeysotre server.p12 -srcstoretype PKCS12 -destkeystore server.keystore -deststoretype JKS

2017年2月22日水曜日

プライベート認証局によるCA証明書つきSSL証明書の発行について

ここでは自身が管理するプライベート認証局を使ってSSL証明書にCA証明書を発行する方法について説明します。

プライベート認証局の構築方法については別記の「プライベート認証のルート証明書の作成について」を参考にしてください。

■KEYファイルの生成

秘密鍵と公開鍵のセットを生成します。
openssl genrsa -aes256 -out server.key 2048

CSRファイルの生成

KEYファイルを元にコモンネームを含んだ公開鍵を生成します。
openssl req -new -key server.key -out server.csr 

■CRTファイルの生成

CA証明書付きのSSL証明書を生成します。
openssl ca -in server.csr -out server.crt \
-keyfile /etc/pki/CA/private/cakey.pem \
-cert /etc/pki/CA/cacert.pem \
-config /etc/pki/tls/openssl-ca.cnf

■秘密鍵の復号化

最後におまけで秘密鍵の複合化についても記載します。
openssl rsa -in server.key -out server.dec.key

プライベート認証のルート証明書の作成について

今回は開発用WEBサーバや社内向けのWEBサービスなどに利用できる、プライベート認証局の構築方法について説明します。

構築環境はCentOS7で、OpenSSLは予めインストールされているものとします。

■CA用のコンフィグ作成

はじめにCA作成用にOpenSSLのコンフィグを作成します。
  1. 既存のコンフィグをコピー
  2. cp /etc/pki/tls/openssl.cnf /etc/pki/tls/openssl-ca.cnf
    
  3. コピーしたコンフィグを修正する
  4. nsCertType 以外は任意ですが付けておくと便利です。
    default_days = 1095
    
    [ req ]
    default_bits = 2048
    default_md = sha256
    
    [ req_distinguished_name ]
    countryName_default = JP
    stateOrProvinceName_default = Kyoto
    localityName_default = Kyoto
    0.organizationName_default = SITZ Co.Ltd.
    emailAddress_default = system@sitz.co.jp
    
    # nsCertType
    nsCertType = sslCA, emailCA
    

■CAの生成

新たに作ったコンフィグを使ってCAを生成します。
SSLEAY_CONFIG="-config /etc/pki/tls/openssl-ca.cnf" \
/etc/pki/tls/misc/CA -newca

■インポート用ファイルに変換

WindowsなどにインポートしやすいようにDERファイルに変換します。
openssl x509 -in /etc/pki/CA/cacert.pem -inform pem \
-out /etc/pki/CA/cacert.der -outform der

2017年2月13日月曜日

JAVAでテスト用SSL証明書を許可する

 Tomcatを使ってTLS接続のサーバ間通信をしようとすると、テスト用サーバの証明書が認証局に登録されていなくってSSLExceptionが出ることがあります。
 その際に、JAVAの信頼済み証明書にテスト用のSSL証明書を登録することで回避する方法について記録します。

■症状

JAVAを使ったHTTPS通信でテストサーバに繋ぐと、SSLExceptionがでる。

■回避方法

ネットを調べていると信頼済み証明書に追加する方法と、証明書の検証をしない方法とがありましたが、後者の場合本運用にそのまま移行できないので、ここでは前者の信頼済み証明書に追加する方法について説明します。

■信頼済み証明書に登録する

  1. tomcatが使用しているjavaのパスを調査し、cacertsを探す
  2. cacertsの場所は通常以下のような場所にあります。
    • Windowsの場合
    • C:\Program Files\java\jre<バージョン番号>\lib\security
      
    • CentOSの場合
    • /etc/pki/ca-trust/extracted/java/
      
  3. keytoolを使ってcacertsに証明書(CRT)を追加する
  4. keytool -importcert -v -trustcacerts -file <証明書ファイル> -keystore <信頼済み証明書ファイル>
    
    証明書ファイル: /etc/httpd/ssl/server.crt
    信頼済み証明書ファイル: /etc/pki/ca-trust/extracted/java/cacerts
    各ファイルが上記の場所に保存されている場合
    keytool -importcert -v -trustcacerts -file /etc/httpd/ssl/server.crt -keystore /etc/pki/ca-trust/extracted/java/cacerts [Enter]
    キーストアのパスワードを入力してください:  
    所有者: CN=www.test.jp, O=Company, L=Kyoto, ST=Kyoto, C=jp
    発行者: CN=www.test.jp, O=Company, L=Kyoto, ST=Kyoto, C=jp
    シリアル番号: ****************
    有効期間の開始日: Mon Feb 13 14:17:42 JST 2017終了日: Thu Feb 11 14:17:42 JST 2027
    証明書のフィンガプリント:
             MD5:  **:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**
             SHA1: **:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**
             SHA256: **:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**
             署名アルゴリズム名: SHA512withRSA
             バージョン: 1
    この証明書を信頼しますか。 [いいえ]:  y
    証明書がキーストアに追加されました
    [/etc/pki/ca-trust/extracted/java/cacertsを格納中]
    
    これは、CentOSの例になりますが、Windowsの場合適所修正してください。

■Eclipseの場合

Eclipseでデバッグしている場合は設定のサーバでどのフォルダのJAVAを使用しているか確認することが出来ます。

2015年10月30日金曜日

WSUSのクリーンアップ

 今回はWSUSのデータベースの整理についての備忘録です。

 Windows Server Update Serviceの更新情報の管理はすべてデータベースで管理されています。DBは通常SQL Server Expressを使用して運用されますがここに問題があります。
 SQL Server Expressはスキーマごとに容量が4GBまでと制限されています。WSUSを数年も運用し続けるとこのデータベースはすぐに4GBを超えてしまいます。
 4GBを超えるとWSUSがデータベースを使用するたびに容量制限のログが記録されていき、これに気付かず放置し続けると1か月もすれば数十GBというログファイルが生成されます。
 ある日気づくとサーバのシステムドライブが容量不足になっていろいろな問題が発生…ということになります。
クリーンアップで解決できない場合はこちらも参考にしてみてください。
WSUSの「接続エラー」の対処方法について

■WSUS DBのインデックス整理

 データベースのインデックスを再構成することでサイズを若干減らすことができます。
 また、次の「WSUSのクリーンアップ」を行う前にもDBのインデックスを整理しておくことをお勧めします。サーバのクリーンアップを行ったことのない環境では特に作業に時間がかかるようで、インデックスを整理しておくことである程度改善できるようです。

WSUS DB インデックスの再構成の手順について

■WSUSのクリーンアップ

 対処方法としてはWSUSのオプションから「サーバー クリーンアップ ウィザード」を実行することです。

更新プログラムのクリーンアップについて

■WSUSの再構築

 最終手段としてはWSUSの再構築を行うことです。上記リンク先の「更新プログラムのクリーンアップについて」で記載されていますが、製品とクラスを再設定してもデータベースの容量は削減されないようです。
 この場合、再構築して製品とクラスを適正に設定することで、データベースを新たに作り直すことでサイズを減らすことができるようです。

■対象

OS: Windows Server 2008R2
Version: WSUS 3.0

2015年9月7日月曜日

SyntaxHighlighterの使い方

さまざまなサイトで紹介されているのでいまさらですが、すぐに使い方を忘れてしまうのでブログの趣旨通り備忘録として記録しておきます。

準備

まずはHTMLのヘッダに次のような一文を追加します。
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/>
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeEclipse.css' rel='stylesheet' type='text/css'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushBash.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCpp.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js' type='text/javascript'/>
<script language='javascript' type='text/javascript'>
 SyntaxHighlighter.config.bloggerMode = true;
 SyntaxHighlighter.all();
</script>
例の場合、bash、C++、Java、XMLのコードに対応できます。

使用方法

コード表示にしたいところを<pre>タグで囲います。あとはclass属性で”brush: ○○;"と定義するとそれぞれのコードに最適化された表示になります。

使用例

<pre class="brush: java; tab-size: 4;">
class A {
  private int a;
  public A(int a) {
    this.a = a;
  }
};
</pre>
class A {
  private int a;
  public A(int a) {
    this.a = a;
  }
};

参考資料 

ソースコード表示

2015年1月26日月曜日

SSL証明書の内容を確認する方法

作成済みのSSL証明書の内容を確認する方法について、様のほぼ引用ですが、次の通りです。

■証明書ファイルの内容を確認

openssl x509 -text -noout -in [ファイル名]

■秘密鍵ファイルの内容を確認

openssl rsa -text -noout -in [ファイル名]

■CSRファイルの内容を確認

openssl req -text -noout -in [ファイル名]

■参考にさせていただいたサイト

グローバルサイン

2015年1月23日金曜日

SSL証明書の更新について

セキュリティの確保されたホームページを管理していると、最低でも年に1回この作業をしないといけません。
そこでSSL証明書の更新について記録しておきます。

■要件

ここで紹介するSSL証明書の要件は次のようなものです。必要に応じて変更してください。
  • キーペアの名前: private.key
  • 公開鍵の名前: public.csr
  • キーペアの種類と鍵長: RSA2048
  • 秘密鍵の暗号化方法: AES256
  • 署名のハッシュ方法: SHA256

■作業内容

  • 鍵の生成
  • 認証局へ登録する
  • 認証局の署名付きSSL証明書を受け取る

■鍵の生成

まずはじめに証明書を発行してもらう鍵を生成する必要があります。実際に証明書を発行してもらうのは公開鍵のほうだけです。
  1. キーペアを生成する
  2. openssl genrsa -aes256 -out private.key 2048
  3. 生成したキーペアから公開鍵を生成する
  4. openssl req -new -sha256 -key private.key -out public.csr

■認証局へ登録する

VeriSignやGlobalSignに登録して証明書(認証局の署名付きの公開鍵)を発行してもらいます。
ここでは当社が利用しているGlobalSignの登録方法について説明します。
  1. 認証局のサイトの更新画面を開く
  2. GlobalSignのサイトにログインし「現在更新可能な証明書」をクリックします。
  3. CSRを入力する
  4. サービスの内容、技術担当者情報などを入力し、CSR入力画面まで進みます。
    「CSRを利用する」にチェックをつけて、先ほど生成したpublic.csr内のテキストを赤い枠内に入力します。

■認証局の署名付きSSL証明書を受け取る

あとは登録完了を待つのみです。

2015年1月21日水曜日

SVNリビジョンのログメッセージを変更できるようにする

SVNリビジョンのログメッセージを後から編集できるようにする方法について説明します。

■症状

SVNの初期設定で後からログメッセージを編集をしようとすると、次のようなエラーが表示されます。
 

■説明

リポジトリのルートパスにある"hooks"フォルダに"pre-revprop-change"というコマンドを作成する必要があります。
実際にはその中で変更を受け付けるかなどのコマンドを書く必要があるようですが、幸いメッセージの変更を受け付けるコマンドが書かれたテンプレートが、同じフォルダ内にあるのでこれをコピーします。

■設定方法

  1. リポジトリのルートパスにある"hooks"に移動する
  2. cd /var/www/svn/<リポジトリ名>/hooks
    
  3. ファイルを複製し所有権を"apache"にして実行権限(744)を付与する
  4. sudo -u apache cp pre-revprop-change.tmpl pre-revprop-change
    chmod 744 pre-revprop-change
    

2015年1月13日火曜日

Thunderbirdでフォルダペイン以外が表示されないときの対処法

Thunderbirdを使っているとごくまれにフォルダペイン以外が全く表示されなくなることがあります。
その問題の対処方法について説明します。

症状

フォルダペインに受信フォルダなどは表示されるものの、それらを選択してもメール一覧が表示されない。
一見、受信メールなどがすべて消えたかのような状態になります。

原因

アドオンファイルの破損。
今回確認したのはカレンダーの管理プラグインである「Lightning」の破損でした。

対処方法

アドオンが破損するとアドオンの画面も表示されなくなります。
  1. 「SHIFT」キーを押しながらThunderbirdを起動する。
  2. 次のダイヤログが表示されるので「セーフモード」で起動する
  3. アドオンを一つずつチェックを入れながら通常起動する
  4. 動作を確認し問題を確認したらチェックを付けたアドオンを削除する
上記作業の1~4を繰り返して問題のあるアドオンを削除していきます。必要なアドオンであれば再インストールしてください。

参考資料

Thunderbirdのセーフモード

2015年1月9日金曜日

SVNにユーザーを追加する方法

Subversionに新しいユーザーを追加する方法についての説明です。

次のコマンドを使ってユーザーを追加します。
htpasswd -m [パスワードファイル] [ユーザー名]
パスワードファイル:httpのBasic認証のパスワードが保存されているパス
ユーザー名:新しく追加するパスワード

■パスワードファイルの位置を確認するには

パスワードが保存されている位置は/etc/httpd/conf.d/subversion.conf内にある以下の位置を確認します。
<Location /repos>
   <LimitExcept GET PROPFIND OPTIONS REPORT>

      [中略]

      AuthUserFile /etc/httpd/conf/.htpasswd   <---ここを確認する

      [中略]

   </LimitExcept>
</Location>

2014年12月26日金曜日

eclipseでTomcatプロジェクトのJavaバージョンを切り替える方法

eclipseの開発環境でTomcatプロジェクトのJavaを新しいバージョンに切り替える方法についてまとめます。
Java1.8に切り替える例です。

1.新しいバージョンのJDKをインストールする

 まずはじめに新しいバージョンのJDKをインストールしておきます。

2.インストール済みのJREを追加する

 eclipseの設定、「インストール済みJRE」で新しいJREを追加する。もしくは既存のJREを新しいJREに置き換えます。

3.コンパイラー準拠レベルを変更する

 同じくeclipseの設定、「コンパイラー」の「コンパイラー準拠レベル」を新しいバージョンに切り替えます。

4.Javaのビルド・パスにJREシステム・ライブラリーを追加する

プロジェクトのプロパティ、「Javaのビルド・パス」にある「JREシステム・ライブラリー」を選択し「編集」をクリックします。


JREシステム・ライブラリの最新バージョンを選択し「完了」をクリックします。

5.プロジェクト・ファセットを修正する

 プロジェクトのプロパティ、「プロジェクト・ファセット」にある、Javaのバージョンを新しいものに切り替えます。

2014年4月22日火曜日

UDNを使ってデプロイする

UDNを使ってCloudFoundryへアプリケーションをデプロイする方法についての説明です。

 UDNでアプリケーションをデプロイする際、通常フォルダ内のものをすべてアプリケーションにアップロードする動作になりますが、eclipseなどを使って開発しているとデプロイファイルは「WAR形式」によってエクスポートされます。
 拡張子を「ZIP形式」変更し解凍してからデプロイしてもいいのですが、何度もテストするときなどは非常に不便です。
 そこでUDNコマンドを使う際に「--path」オプションを使うことによってWARファイルを直接指定することができます。

■PUSH

 UDNを使ってアプリケーションをデプロイする際注意しないといけないのがRuntimeの選択です。通常デプロイした内容に応じて適切にRuntimeが選択されるのですが、バージョンの違いによって正常に動作しない場合があります。
 これは「udn runtimes」コマンドを使うことでどのRuntimeが利用できて、既定のバージョンが何であるかが確認できます。
udn runtimes
+--------+---------------+-----------+
| Name   | Description   | Version   |
+--------+---------------+-----------+
| java   | Sun Java 6    | 1.6.0_45  |
| java6  | Sun Java 6    | 1.6.0_45  |
| java7  | Oracle Java 7 | 1.7.0_25  |
| ruby   | Ruby 1.9.3    | 1.9.3p484 |
| ruby18 | Ruby 1.8.7    | 1.8.7p358 |
以下略
 上記の様に表示された場合、JAVAでデプロイするとJAVAのバージョン6が既定で選択されます。こういった場合、「push」のオプションに「--runtime java7」を指定することで、強制的にJAVAのバージョン7を使うことができます。
udn push test-app --path test-app.war --runtime java7

■UPDATE

一度デプロイしたアプリケーションはアップデートすることも可能です。
アップデートの際にはRuntimeを指定する必要はありません。
udn update test-app --path test-app.war

2014年2月28日金曜日

Word2010・2013が急に遅くなる時の対処方法

 以前、Word2010・2013が遅い時の対処方法を書きましたが、その対処をしていても急にWordが遅くなり始めることがあります。
 この原因と対処方法について説明します。

症状

 Wordを起動して文章を編集していると急に動きが遅くなる。

原因

 おそらくWordの自動バックアップ機能が保存時のファイル形式にdocxを使用していることが原因と思われます。
 このため自動バックアップがとられるとそれ以降動きが遅くなります。

対処方法

 自動バックアップを無効にする。

副作用

 この対処法をとることで自動バックアップが取れなくなりますのでご注意ください。