Let’s Encrypt + Apache でちゃんと証明書の生成が完了してるのに ‘*.pem’ does not exist or is empty というエラーが出る時のメモ

問題点

私の環境ではmod_sslのインストールでも一悶着ありましたけど、長くなるので割愛するとして、CentOS6.7 + Apache2.2.27の環境でLet’s Encryptのクライアントをインストールし、webrootで各証明書ファイルの生成も完了し、virtualhostでcert.pem、chain.pem、privkey.pemの場所指定も問題ないのに「apachectl configtest」を実行すると以下のエラーで怒られました。

$ apachectl configtest
Syntax error on line XX of /path/to/ssl.conf:
SSLCertificateFile: file '/path/to/cert.pem' does not exist or is empty

こういう時は相手が人間なら「はー?ふざけんなボケカス!空っぽなわけねーだろうが!!目ん玉かっぽじってよく見ろこのスットコドッコイが!!!」とか言えば収まるところに収まると思いますが、相手がコンピュータの場合は今の所人間が必死になって問題を特定するしかない。早く汎用AIが実現してほしい。

原因

まあ大抵パーミッションがあやしいんですよ。こういうのは。

とかいってすぐ分かったような感じで書いてますけど、設定ファイル見直したり、ググって原因ぽいものが見つからないか現時点で1時間くらい駆け回ってますので。はい。

で、とりあえずパーミッションを確認してみたら案の定「/etc/letsencrypt/archive/」と「/etc/letsencrypt/live/」のパーミッションが「744」になってました。

たぶんこれが原因だろうということでchmodでパーミッションを「755」に変更。

$ sudo chmod 755 /etc/letsencrypt/archive/
$ sudo chmod 755 /etc/letsencrypt/live/

この状態で「apachectl configtest」を実行すると…

$ apachectl configtest
Syntax OK

よかったね。

Geolocation API のメモ

あとで対応するためのメモ。

今更気づいたが、Google Chrome で Geolocation API を使用すると以下のアラートが表示される。

getCurrentPosition() and watchPosition() are deprecated on insecure origins, and support will be removed in the future. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.

要するに以下の機能を含むWebサイトはさっさとHTTPSに切り替えろと。

  • Device motion / orientation
  • Encrypted Media Extensions (EME)
  • Fullscreen
  • Geolocation (getCurrentPosition(),watchPosition())
  • getUserMedia()

W3Cの関連文書のリンク:
https://w3c.github.io/webappsec-secure-contexts/

顔アイコンジェネレータを作った

スクリーンショット 2015-07-03 22.33.11

顔アイコンジェネレータを作りました。

PNG Face Icon Generator(http://ficns.com/)

なんかバグがあると思いますが、最低限動作する感じになったので自由にご利用ください。

アイコンのオリジナルは以下のURLでダウンロードできる「Avatars and Emoticons Vector Set」というフリーの素晴らしいベクターファイルです。勝手ながら使わせていただきました。どうもありがとうございます。

http://www.webappers.com/2014/03/26/free-download-avatars-and-emoticons-vector-set/

今のところ、口の大きさがそろってなかったり、各パーツの位置などを調整することができませんが、そのうち対応するつもりです。

制作でよく使うWPプラグインまとめ

個人的忘備録用のエントリー。

よく使う

SiteGuard WP Plugin

セキュリティ強化。ログインロックダウン、アラート、日本語画像認証、フェールワンスなど全部入り。

Sucuri Security

マルウェアスキャナ。上記のSiteGuardプラグインと競合する機能も含まれるが念のため。

Crazy Bone

ログインしたユーザー名やリモートIPを記録する。上記のSucuri Securityプラグインと(以下省略)

PS Disable Auto Formatting

WPの標準エディタの仕様が未だにアレなのでまだこのプラグイン使ってる。

Google Analytics Dashboard for WP

Google Analyticsのトラッキングコード設置用。ダッシュボードで簡易的なアクセス解析ができて便利。

Admin Menu Editor

管理画面の不要項目を非表示にできるプラグイン。投稿やコメントなどを利用しないサイトを構築した場合、メニュー項目自体を非表示にできるため、認知負荷が減少し、多少ユーザビリティが向上するのに加え、余計な質問が飛んでこなくなるのでクライアントワークで重用してる。

Duplicate Post

投稿や固定ページ、カスタム投稿タイプを複製できるようになるプラグイン。

Image Widget

リンク付きの画像ウィジェットを追加できるプラグイン。便利。

MW WP Form

確認画面付きのメールフォームを簡単に作成できるプラグイン。確認画面の有無はユーザビリティの概念を超えてもはや宗教と化しており、「確認画面が無いなんて信じられない!」「確認画面が不要だって?カルマが足りないんじゃ無いですか?」とクライアントに詰め寄られる可能性が高いため、ありがたくこのプラグインを使ってます。バリデーションやメール送信に関するフィルターが用意されているため、使い勝手が良い。画面描画系のフィルターフックがあるとさらに良い。

気になる

Types

カスタム投稿タイプとカスタムフィールドを一括管理できるらしい。便利そう。

【WordPress】ACFのアドオン「Date and Time Picker Field」で時間の入力間隔を変更する

WordPressのプラグイン「Advanced Custom Fields」のアドオンに「Date and Time Picker Field」という時間入力に使える便利なものがあるのですが、デフォルトでは入力スライダーが1ずつ加算されていくため、例えば10分間隔でパラメータを入力したいという場合には、そのままだとユーザービリティがあまりよろしくありません。

コードをチェックしてみると、どうやら「jquery-ui-timepicker-addon.js」というjQueryのコードをそのまま読み込んでいるようなので、Date and Time Pickerアドオンのjsディレクトリ以下にあるjquery-ui-timepicker-addon.jsをエディタで開き、stepの部分を任意のパラメータに変更すれば目的が達成出来そうです。(プラグインのコードを直接いじるとアップデートに対応出来なくなるため、あまりよろしくありませんが。)

例えばスライダーの分を10分刻みにしたい時は以下のように「stepMinute」を変更します。

[acf-field-date-time-picker/js/jquery-ui-timepicker-addon.js]

...
stepHour: 1,
stepMinute: 10,
stepSecond: 1,
stepMillisec: 1,
stepMicrosec: 1,
...

時間の入力間隔を変更したい場合は同様に「stepHour」のパラメータを変更すれば、設定した間隔でスライダーが動作するようになると思います。

twitterから「○○さん、ログインいただきありがとうございます。」というメールが届く

ここ最近、全くログインした記憶が無いにもかかわらず、開発用に取得したtwitterアカウントに表題のメールが届きました。

念のためパスワード変更しておきましたが、アカウントをクラックされたのか、あるいは長期間ログインしていないアカウントにtwitterがメール飛ばしているだけなのかちょっと判断がつきません。

後者なら問題ありませんが、前者だと色々と厄介です。

検索するといくつか同じ事象がヒットするものの解決せず。

まあ、こんなものはtwitterに確認してみれば良いんですが、なんとtwitterの問い合わせ先が見つからない。5年以上使ってて初めて知りましたが、正確には総合お問合せみたいなものが見当たりません。

日本語版のtwitterサポートアカウント(@TwitterHelpJP)は返事しないらしいし、一応、ヘルプはあるけど一向にフォームが現れない。

twitterくらいの規模だと問い合わせなんてさばき切れないのだろうな。

似たメールが届いた事がある人は教えて頂けると助かります。

十戒を簡単につくれるWebアプリ「Jikkai」

MA9の締切日を10月31日だと勝手に勘違いしてて結局間に合いませんでしたが作ったので公開します。

Jikkai(http://alpha-version.com/jikkai/

Jikkaiはその名の通り「十戒」を作ることが出来るWebアプリです。十戒をつくると同時に十戒を破壊するためのURLが生成されるので、信頼出来る人等にURLを渡して十戒に背いていないかチェックしてもらいます。

具体的にはまず以下の様な十戒が作られます。

鋼の教えに背くとこれがこうなる。

jikkai2

そしてさらにこう。

jikkai3

最後にこれ。

jikkai4

5年くらい前に思いついたやつをバックエンドのみappiariesで作りました。

jsonでデータのやり取り(読込、作成、更新、削除)ができるので、データベースとかサーバーサイドの事はよくわかんねえけどメモ帳とか掲示板みたいなの作りたいという人はBaaSを使うと良いかもしれませんね。

以上。

WordPressで投稿者アーカイブを出力させないようにする方法

はっきりとした事は不明だがWordPress日本語フォーラムの以下の報告を皮切りに改ざん報告がちらほらと見受けられる。

WordPress › フォーラム » サイト改ざん?

Googleの検索結果では2011年くらいにも同様の事例が引っかかるので、今に始まったわけじゃないようだが、ここ半年くらい、特にここ数週間は顕著なようだ。

今後、ロリポップやhetemlから何らかのアナウンスがあるんじゃないかと思うが、そんな中、node.jsをいじろうと思って契約したものの、全くいじっていないGehirn Web ServicesからWordPressの不正アクセスに関するメールが届いたため、一部抜粋して転載する。

日本時間の2013年8月28日 午後3時頃より、平常時よりも大量の WordPress ログインを試みる不正なアクセスが検出されています。
現在、弊社の分析局で攻撃手法や特徴を分析しております。

弊社の分析によりますと、 /?author=1 にアクセスすることで使用しているユーザー名が分かることから、 デフォルトの admin アカウント以外のユーザ名を設定されているお客様にも影響があると見られ、十分に注意が必要です。

ということで、どうやらWordPressの投稿者アーカイブが狙われているっぽいので、これを無効化するコードを二つ程紹介する。

投稿者アーカイブを非表示にする

以下のコードをテーマの functions.php に突っ込むとauthorクエリ(?author=xxx)を無効化して404を返すようになる。

function disable_author_archive($q) {
  if ( $q->is_admin ) {
    return $q;
  }elseif ( $q->is_author ) {
    unset( $_REQUEST['author'] );
    $q->set( 'author', '' );
    $q->set_404();
  }
}
add_action('parse_query', 'disable_author_archive');

参考:Disable the WordPress Public Search

上記の参考先では ?s= の検索クエリを無効化するものなので、気になる人はついでに利用すると良いんじゃないかと思う。

あるいは以下のコードでURLに author が含まれた場合、どこか適当なページにリダイレクトさせるようにする。

function redirect_author_archive() {
  if( isset($_REQUEST['author']) || preg_match('#/author/.+#', $_SERVER['REQUEST_URI']) ){
    wp_redirect( home_url( '/404' ) ); //リダイレクト先
    exit;
  }
}
add_action('init', 'redirect_author_archive');

参考:WordPress › フォーラム » セキュリティ向上:ログインIDをURLにしたくない

他にもプラグインで対応可能かもしれない。

PhoneGapでカラーコード変換アプリを作成

単なる宣伝なんですが、アプリ登録の全体の流れを知るためにPhoneGapですげー適当に作ったカラーコード変換アプリがAppStoreで公開されました。

↓ついでにAndroid版も公開しました。全く同じコードで吐き出せるかと思いきや、Andoroidではなぜか navigator.notification.alert が上手く働かないため、jsの alert() をそのまま使ってます。あとグラデーションが妙に汚い。また、Andoridエミュレータで見たら重かったのでjQueryのアニメーションをカットした他、細かい部分を調整してあります。


Android app on Google Play

(さらに…)

【忘備録】PhoneGap2.9.0 + Xcode4.6.3 でarchiveしようとしたらエラー

しょうもないiPhoneアプリがある程度完成したので、AppStoreに登録してみるかと思ったわけですが、まず登録用のバイナリの吐き出し方が分からない。

調べたところ、どうやらXcodeで[Product]-[Archive]を実行すればいいらしいと判明したため早速実行。(※前提条件として本番用のProvisionigプロファイルは生成済みです。)

しかし、PhoneGap2.9.0 + Xcode4.6.3でarchiveを実行したところ以下のエラーが発生。※既にPhoneGap3.0がリリースされているのでバージョンアップ後は関係無いかもしれません。

〜/Applications/libCordova.a
clang: error: linker command failed with exit code 1 (use -v to see invocation)

事前にBundle identifierを変更したのでそのせいかとも思ったがググったら以下の対処法を発見。

phonegap v2.9でxcodeの4.6のリリースのために、アーカイブを構築できない

↑恐らくどこからかの転載である上に日本語訳がすげー怪しいが気にしない。

上記のURLを参考に修正を実施。以下の手順で書き換えを行えば良いらしい。もっとも参照元では以下の手順だけでは上手く行かなかったようですが。

Found a fix.

    1.In your Target's Build Settings,
      find Other Linker Flags
    2.Change $(TARGET_BUILD_DIR)/libCordova.a
    3.To $(BUILT_PRODUCTS_DIR)/libCordova.a

図解すると以下のような感じで修正を行う。

この状態で再度[Product]-[Archive]を実行したところ上手く行った模様。

しかし、参照元サイトでは以下の気になる一文が・・・

With the above trick, I can achieve the app and submit to App Store with no issue. But I found out in the iTune Connect that it shows "Invalid binary".

App Storeにsubmitは出来たけどInvalid binaryで突っ返されたって書いてあるんだが大丈夫なんだろうか。

一応、上記の手順でバイナリを作成後、苦行に近い行程を経てなんとかAppStoreに申請しました。何かあればまた次回。

Pages: 1 2 3 4 5 6 7 8 9 10 11 Next
IT起業アカデミア