Skip to main content

グーテンベルクエディターによる日本語翻訳の不在

WPGlobusは未だにWordpressの最新ポストエディターであるグーテンベルクのサポートがまだ行われておりません。

フォーラムはまだサポートを向けて開発に取り組んでいるようですが、グーテンベルクのバージョンアップも続いている今は、その対応に難しいところもあります。

その間、日本語の翻訳がなくて多国語環境の構成に問題がありましたが、一応このエディターをオフすることで解決しようとしました。

なるべく早く解決策が出てほしいです。

コインランドリーと洗濯機、どっち?

コインランドリーについて

一人暮らしを始めて、高い洗濯機を最初から置けるとは普通は思えません。となると、結局手洗いしかないかと思いますが、手洗いはその効果、絞りの時の服へのダメージなどを考えるとあまりいい方法ではないでしょう。何よりも、時間もかかるし、浴室に揃っておく備品も少なくありません。

そこで、コインランドリーの存在に気が付きます。手洗いを実際にしてみて、一週間溜めてコインランドリー一回で済むし、クオリティーも服の管理にも良いとすぐわかりました。

しかし、スタッフも常駐していないし、セルフなのでどうしたらいいのかなかなかわかりません。心の準備が必要ですね。

便利な使い方

アマゾンで予め買っておいたランドリーのバスケットがこんなに役立つとは思いませんでした。いっぱい詰まっている服を持って遠く来た分、この空間をしっかり把握してみましょう。

バスケットに重くなるまで積んでませんでしたか、オートドアなので何よりです。日本にはオートが多いなのは、韓国との違いの一つでしょうね。

一見、同じく見えますが、洗濯機のサイズが違います。大きくなるほど使用量も高いです!

一方、安い方の洗濯機は普通はなかなか空いていません。時には前の方が終わった後にも入れっぱなしで放置されているところもあります。その時は、店内のバスケットに出して自分のを入れても問題はないはずですが、なんか後ほどに顔を合わせることになるか気になって、ここは私が譲ってあげることにしました。

つまり、100円損しましたね。

服を入れて、硬貨も指示通りに入れてスタートです。

ドラム式洗濯機の中で水が勢いよく弾けていました。韓国では節水で水も見えないことが普通だと思いますが…

30分ぐらいですが、じっと待っているのもつまらないので散歩してきました。バスケットを盗まれるか置いてきてそわそわしましたが、何事もなかったです。

使い終わったら布で拭ってくださいと書いていて、指示通りにします。もし、ソックスとか落ちていたら、これで見つかるので是非しましょう。

乾燥器もサイズが小さければ、同じ金額でも長くできるので重要です。油などの成分が含まれてないか、気を付けましょう。発火の可能性があるらしいです。

そして不便なところ

何よりも、家から遠いということです。グーグルマップでコインランドリーを探したらいくつか出ますが、東京近郊なのに、その密度はあまり高い方ではありません。

家から歩けない距離もなくないはずです。それと、実際に営業をしていない場合もあるので、手ぶらで一度は行ってみないとダメです。

洗濯の結果もそれぞれです。同じ洗濯機と乾燥機が使えない場合もあり、お金がかかるので、一度洗われてないところを再び入れるということは難しいです。

時間の経ちにつれて訪問を重ねるほど、経済的に不利になります。洗濯500円と乾燥300円かかりましたが、毎週すると月に3000円を超えますので、1年以上と2年未満で、安い洗濯機が買えるくらいはなります。

結論

洗濯機の収納はアマゾンと楽天市場などでDIY式で売っています。組み立ての難しさと面倒さが半端ではないので、お勧めはできませんが…

買ってみましょう。楽になります。金は後の問題

家電量販店のヨドバシカメラで送料無料になるメンバーシップアプリに釣られ買いました。

洗濯機の機種をエントリーとミドルの間ぐらいにしても結構いいです。4万円くらいなので、ちょっと悩ましいでしたが、オプションとスペックをチェックすると自分に合うものが見つかりました。

長期に住むほどお得なので、迷うこともないです。金がなくても、カードで何とかなりますね。

 

 

日本で外国人として部屋探しの経験

居場所を探す理由

日本で就職をしたため、すぐに部屋を探さなければならに事になりました。もちろん、これが面倒と思われる方がいらっしゃったら、他の選択肢もあります。
  • シェアハウス: 月々支払いで家具家電付きの一人部屋があります。しかし、台所と居間、浴室などは5人か6人で一緒に使うことが普通です。部屋でも1人、2人、ドミトリーもあって、個人のスペースがない場合もあります。
  • マンスリーマンション: 들어가는 입구로 보면 온전히 혼자 쓰는 주택입니다. 가구가 갖춰져 있고 기본적인 공공 서비스도 제공됩니다. 초기비를 억제할 수 있지만 대체로 관리비가 비싸고, 장기 거주가 불가능한 경우도 있습니다.
  • 지인의 집: 민폐를 끼치지 않는다는 일본의 문화적 장벽을 뛰어넘고 이런 선택지를 고르기 위해서는, 장래를 약속했을 정도로 깊이 친밀한 사람이 있거나, 별도로 정해진 계약을 하거나, 철면피거나 셋 중 하나일 것 같습니다. 가능하다면 의외로 괜찮을 것 같지만 제겐 어려워보였습니다.
그런 관계로 유학 같이 끝이 정해진 단기 거주가 아닌, 취직으로 인한 장기 거주를 노리는 저에게 적합한 선택지는 부동산을 직접 보러 다니고 월셋방을 구하는 것이 답이라는 결론이 나왔습니다. 거의 모든 과정은 일본어로 진행되었습니다. 메일부터 현지 상담 모든 것이 말이죠. 영어 대응이 필요하다면, 관련 도움을 줄 수 있는 외국인 전용 부동산 회사가 필요할 것 같습니다. 물론 외국인 OK라고 처음부터 내걸고 나온 매물만 갖고 있으니 선택지가 무척 좁다는 문제가 있긴 합니다.

진행 프로세스

무엇이 필요할까?

  • 여권 또는 재류 카드. 둘 다 요구할 수도 있습니다.
    • 저는 입국시 공항에서 발급 오류로 재류 카드가 없어서 여권만 냈습니다.
    • 보통 여행 비자로 먼저 입국해서 집을 알아보고 취업 상태로 올 거라 가정하면, 이 사례로 보아 큰 문제가 되지 않을 것 같습니다.
  • 인감 도장 (현 시점에서 등록되지 않았어도 앞으로 등록하면 됨)
    • 한국의 도장소에서 미리 한자 도장을 준비해가세요.
  • 취업으로 인한 이사인 경우, 취업을 증명할 고용계약서 사본
  • 내 전화 번호
    • 그러나 외국인 입장에서 현지 휴대폰을 이 단계에서 갖고 있지 않을테니, Skype 같은 곳에서 임시 일본 번호를 발급받기를 권합니다.
    • Skype에서 크레딧을 미리 충전해두고, 일본 VPN으로 접속하여 +81로 시작하는 Skype 번호를 1~3개월 단위로 구매, 내 휴대전화로 착신전환까지 걸어두면 준비는 완벽합니다.
    • 050으로 시작하는, 한국으로 치면 인터넷 전화 070에 해당하는 국번을 발급받게 됩니다. +81-50-… 이렇게 번호가 시작되겠지요.
    • 실제 휴대 전화 개통 후에 부동산에 연락해서 연락처를 꼭 바꿉시다.
  • 이름과 전화 번호, 생년월일 정도는 읊을 수 있는 일본인 현지 지인
    • 긴급 연락처로 활용됩니다. 이게 없는 매물은 아마 없지 싶습니다.
    • 연대보증인이 필수인 매물에서 보증인 자격으로 활용될 수 있습니다. 이 경우 현지 지인인 상대의 의향을 신중하게 물어보시고, 협조적이지 않을 사람은 애당초 이 방법을 고려하지 않는 게 좋겠습니다. 서류 준비 단계도 무척 번거롭고, 보증을 서준다는 것 자체가 상대방에게 부담을 지우는 일이기 때문이죠.
    • 진짜 이걸 구할 방법이 없다면 외국인 전담 부동산을 찾아가야 할 수밖에 없습니다. 가능한 매물도 줄어들고요.

소요 시간

간단히 생각하기엔 집을 추려내고, 구경하고 계약서에 사인하는 것이 전부인 것 같지만 여기서는 좀 더 심도 있게 모든 것을 진행하는 것 같았습니다. 몇 시간 만에 둘러보고 재차 방문으로 마무리 짓겠다는 애초의 계획은 없던 걸로 했습니다. 그 이유는 세부 단계를 통해 짚어보겠습니다.

세부 단계

1. 매물 사전 조사

부동산 회사에게 모든 것을 맡기면 수월합니다. 그러나 최소한으로 알아야 하는 것은 있습니다. 일단 내가 다니게 될 회사나 학교의 근처를 골라야 하는 건 당연한 것이겠죠. 그리고 그곳의 시세를 알고, 대략적인 축년을 알아야 합니다. 면적과 가격대, 축년, 그 외 다양한 세부 조건을 걸고 부동산에서도 물건을 물색하게 될 것인데, 이것을 전혀 알지 못한다면, 검색 결과가 너무 많거나 적을 것입니다. 나한테 필요한 것을 직접 웹에서 검색해두면…
  1. 매물 결과가 없어서 부랴부랴 조건을 바꿔야 하는 경우가 발생하지 않아 당황할 일이 적어지고요.
  2. 조건에 따라서 어느 정도의 느낌인지, 다양한 사진과 자료를 통해 눈높이를 맞춰갈 수 있습니다. 이 정도 가격대에도 살만하구나, 아니면 죽어도 축년 몇 년 이상은 안 된다, 면적은 얼마여야 한다 이런 나름대로의 기준이 저절로 자리잡힐 것입니다. 자주 찾아보면 볼수록 더 그러합니다.
찾는 법은 간단합니다. 부동산 업체 중개 웹 사이트를 이용해보는 것입니다. 자세한 사이트 이용 방법에 관해서는 후속 글로 더 자세히 다뤄보도록 하겠습니다.

2. 상담 및 방문 예약

사실 부동산 회사에 전화로 문의하거나, 막무가내로 방문하여 매물을 구하는 것도 불가능한 건 아닙니다. 하지만, 보통 부동산 회사에 동시에 나와 있는 담당 직원이 그리 많지가 않고, 견학 등 선약으로 인해 자리를 비우는 경우가 많기 때문에 방문 예약은 필수라고 봐야 합니다. 위 사이트에서 매물을 찾은 다음, 마음에 드는 매물을 미리 즐겨찾기에 넣어둡니다. 각 매물별로 등록한 부동산 회사가 있을 것입니다. 같은 매물을 복수의 부동산 회사가 등록했을 수 있고, 그렇다면 같은 매물도 여러 개 표시될 것입니다. 되도록 부동산 회사를 최소한의 개수로 줄여서 추려내길 권합니다. 여러 매물을 체크 표시하고 상담 요청하는 경우도 있습니다. 그 경우, 나중에 메일함에 여러 회사로부터 메일 폭탄이 쏟아지게 됩니다. 이 사람들의 실적 압박이 상당히 심한 건지, 방문 예약을 끈질기게 권합니다. 노쇼로 괜히 험악한 관계 만들지 말고 내가 진짜 방문할 수 있는 곳만을 추려내야 하는 이유입니다. 마음이 바뀌면 바로 메일로, 다른 매물을 찾았으니 괜찮다고 답장을 보내주세요. 한 부동산 회사는 거절 메일을 받은 뒤에도 “우리 회사가 같은 매물을 더 싸게 제공할지도 모르니 한 번 와보시지”라고 들러붙기도 했습니다. 철벽도 쉬운 게 아니군요. 이제 사이트의 매물을 모아놓은 즐겨찾기에서 상담을 누르게 되면, 견학 여부, 가능한 시간, 연락처 등을 기입하게 됩니다. 메일이 전송되고, 이후 내가 기입한 메일의 수신함으로 하나둘 담당 직원이 연락을 해올 것입니다. 연락주신 매물이 지금도 공실이며 상담 가능하다, 아니면 희망 매물은 없지만 비슷한 조건을 같이 찾아보자 둘 중 하나의 답변으로 오겠지요. 어느쪽이든 부동산 직원 입장에서 손님이 방문한다면 대환영일 것입니다. 구체적인 방문 시간을 서로 겹치지 않게 조율하는 건 메일로 주고받아야 하는 내용입니다. 말이 되시면 전화로 직접 걸어서 약속을 잡아도 되겠습니다. 매물이 갑자기 사라지거나, 새로운 것이 나오는 등 변화가 격하므로 내가 한 곳에서 짧게 있기는 어렵습니다. 시간으로 봐서, 하루에 두 군데 이상 상담하는 게 가능할지 물어볼 때, 저는 회의적으로 봅니다.

3. 부동산 회사 방문 후 상담

메일로 약속 시간이 확정되면, 실제로 현지 부동산 회사에 방문해봅니다. 들어서서 쭈뼛거리면서 “몇 시에 예약한 누구입니다” 라고 일본어로 말하면 내 메일에 답장해줬던 담당 직원 분이 일어서서 인사해주실 겁니다. 기본적인 내 개인 정보를 확인하고, 관련된 서류를 복사한 다음, 본격적으로 매물 상담이 시작됩니다. 웹에서 희망한 물건, 그와 비슷한 매물을 동시에 제안해올텐데요. 이는 종이 설명 내용을 철저히 검토하고 결정해야 할 부분입니다. 실제로 저는 인터넷 무료라고 적힌 매물 두 가지를 보고 저울질하면서, 여기가 어느 정도 속도일까요? 하고 조심스럽게 물어보니, 직접 관리 업체에 전화해서 “여기는 1Gbps를 9세대가 나누어 쓴다, 여기는 300Mbps를 12세대가 나누어 쓴다” 이렇게 알려주셨습니다. 그 외에도 궁금한 점이 있으면 열심히 물어봐야 직원이 알 수 있는 범위 내에서 더 많은 정보를 알아낼 수 있을 것입니다.

4. 견적서 작성

일본의 부동산 비용 구조부터 먼저 생각해야 할 것입니다. 많은 부분이 월세의 배율로 제시되므로, 기본 월세가 높은 집은 부수 비용도 덩달아 오르는 것으로 봐야 합니다. 8만엔, 견딜만해! 라고 생각했는데 초기 비용부터 후덜덜하게 나오는 건 바로 그런 이유인 것이지요. 아래 비용을 포함하여 일괄적인 비용을 산출해냅니다. 초기 비용, 월간 비용으로 크게 나눠서 확인할 수 있습니다. 월간 비용은 입거일로부터의 첫달 일할(日割) 계산 비용이 포함됩니다. 다시 말해서, 이번 달 월간 비용의 하루치 * 일수에 다음달 온전한 월간 비용이 포함되어 첫 청구가 이루어진다는 말입니다. 계약은 대체로 2년이며, 갱신시 새 월세를 한 번 더 내야하는 걸 잊지 마세요.

월간 – 관리비 (公益費)

엘리베이터나 복도 같은 공용 구간 관리에 쓰이는 비용이 주를 이루며, 기타 공동 주택의 거주자 이익을 위해서도 쓰인다고 합니다. 부동산 검색시 이 비용을 포함하여 월세를 계산하는게 일반적입니다. 다만 월세의 배율로 부과되는 다른 비용은 이 비용을 빼고 계산해야겠죠.

초기 – 시키킹 (敷金)

월세의 배율로 제시됩니다.(1개월분 등) 시키킹은 기본적으로는 보증금에 해당합니다. 보증금 명목으로 별도로 더 받는 곳도 있고 수선비로 뭔가 품목이 많은 곳도 있으므로 엄밀히 보증금과 일치하는 개념은 아닙니다. 돌려받을 수 있습니다. 그러나 시키비키(敷引き)가 있는 곳, 원상회복비용(原状回復費用)이 있는 곳은 각각 시키킹에서 그 만큼 빼고 준다고 합니다. 별 대단치도 않은 부분을 물건이 손상되었다고 트집잡아 돌려줘야할 금액에서 공제한다고 하니, 돌아오는 금액이 온전하길 기대하지 않는 게 좋다는 의견도 많네요. 요즘은 그나마도 시키킹이 없는 저렴한 물건도 많이 눈에 띕니다.

초기 – 레이킹 (礼金)

역시 월세의 배율로 제시됩니다. 이것은 집을 구하기 어렵던 전후 일본의 어렵던 시절부터 이어 내려오는 관습으로, 집을 주셔서 감사하다는(?) 성의의 표현이라고 합니다. 돌려받지  못합니다. 요즘 레이킹이 없는 물건도 잘 찾아보면 있습니다. 보통 불리한 조건을 감수하고 내놓는 건 하자가 있는 물건이 대부분이겠지만, 잘 찾아서 저렴하게 구하는 것도 찾는 능력이겠지요.

초기 – 중개수수료 (仲介手数料)

이 또한 월세의 배율로 제시됩니다. 부동산 회사별로 이윤을 내기 위해 중개수수료를 정해놓고 있습니다. 최대로 받아도 1개월분이라고 하는데, 절반으로 깎아주는 행사를 하는 곳도 있으니 꼭 알아봅시다. 시키킹과 레이킹에서 아무리 절약해도 중개수수료를 절약하지 않으면 초기 비용이 배로 드는 건 피할 수 없기 때문입니다. 소비세 포함하여 1.08배로 받는 곳이 최대라고 보시면 됩니다. 언급이 없으면 최대치인 1개월분을 받는 것으로 봐야 한다는 글이 있습니다. 제가 계약한 곳은 광고부터 중개수수료 절감을 내세우는 곳이라 크게 비용을 절약할 수 있었네요. 에이블, 미니미니가 반액 중개수수료로 널리 알려져 있습니다. 다른 곳도 행사를 하는지 예의주시해야겠네요.

초기 or 연간 or 월간 – 보증회사 가입

월세 밀리는 경우를 막기 위해 보증회사를 낀 물건이 절대 다수입니다. 이 회사에 소정의 가입비를 내고 들어가거나, 월 비용을 지불해야 합니다. 연간 갱신비를 받는 곳도 있는 등 물건이 정한 회사별로 과금 방식이 천차만별이니 상담이 필요합니다.

초기 or 월간 – 화재보험료

화재보험료는 집에서 발생하는 침수, 기물 파손, 전소 등에 대한 보상이 이루어집니다. 물론 한도가 정해져 있습니다. 이건 물건에 따라 의무가 아닐 수 있는데, 많은 경우 의무로 가입을 시킵니다.

초기 and/or 월간 – 일부 물건의 서포트 서비스

일부 물건은 긴급 문 열기 서비스, 가내 보안 서비스 등 24시간 대응이 가능한 센터를 운영하고 있습니다. (미니미니 서포트 등) 가입비와 약간의 월간 비용을 받는 곳이 대부분입니다. 대체로 기업이 관리하는 깔끔한 집은 이런 서비스를 끼워파는 것 같았습니다.

초기 – 열쇠교환비 (鍵交換費用)

열쇠교환비는 전 주인이 있는 물건이라면 기본적으로 청구됩니다. 이걸 피하는 방법은 두 가지가 있는데…
  1. 신축 물건을 고른다: 신축 물건은 열쇠교환비를 청구하지 않는다고 합니다. 하지만 월세가 높을 우려가…
  2. 그냥 열쇠 교환 안 한다고 한다: 전 임차인이 그대로 문 열고 들어와도 할 말이 없습니다. 아마 안 된다고 하는 집 주인이 있을 수도 있겠지요. 실제 도난이 일어났을 때 퍽 난감해지지 않을까요.
일부 디지털 도어락이 도입된 물건은 교체할 필요가 없으니 이런 것도 없겠네 싶겠지만, 셋팅비를 따로 받아드십니다. 그나마 열쇠교환비보단 저렴해지더군요. 응, 안 사요. 비양심적이면 교환이 없는데도 가격이 전혀 차이가 없습니다. 누구 주머니로 들어가는 걸까요?

초기 – 청소비 / 제균비

이건 물건에 따라 다르고 아예 없을 수도, 하나만 청구할 수도 있고, 각각 다른 명목으로 둘 이상이 청구될 수 있습니다. 제가 들어간 물건은 이걸 주인이 갖고 있다가 퇴거시에 실제 청소를 하는데 사용한다고 했습니다. 목조 주택은 이런 거 안 하면 벌레로 살 수가 없겠지요. 실제로 들어갔을 때 상당히 깔끔하게 정리되는 것은 좋은 것 같습니다. 다만 비용이 만만치 않다는 게 안타까울 뿐이지요.

월간 – 마을 회비 (町会費)

어떤 행정구역에서는 마을 회비를 요구합니다. 쓰레기 분리수거 방법 교육 등 도움되는 정보를 제공하는 등의 서비스도 덤으로 있다고 하는데요. 다행히 제가 구한 물건은 관리비에 포함되어 있어서 같은 마을인데도 이걸 별도로 청구받지는 않는다고 하더군요.

5. 견학 (内見)

물건을 보고 싶다고 하면 상담해주던 직원이 직접 열쇠를 가져와서 해당 집을 보여줍니다. 당연히 신축 공사장이나 리폼 공사중인 경우에는 어렵겠지만요. 그 외에도 드물게 거주중인 물건을 지목하는 경우에도 내부를 보기는 어렵습니다. 하지만 최대한 편의를 봐주고자, 공동 주택의 경우 같은 건물의 다른 호수를 참고삼아 보자고 할 수도 있습니다. 부동산에 체인인 경우 좀더 넓은 광역권도 찾아주는 경우가 있는데, 이런 견학을 하러 가기에 멀고 어렵기 때문에 지역 부동산을 찾는 것이 중요합니다. 얼른 갔다와서 도장을 찍어야 하니 말이죠. 자료와 일치하는지 눈으로 직접 살펴봅니다. 사진도 여럿 찍어두시고요. 특히 냉장고, 세탁기 같은 대형 가전의 배치를 어떻게 할지 전략을 세우기 위해 줄자 같은 것도 챙겨두길 권합니다. 치수를 알아야 냉장고를 바로 주문할텐데, 이번에 그걸 안 한 게 뼈아픈 실책입니다. 대체로 청소 후 밀봉해놔서 실내에 들어갈 때도 맨발에 덧신을 신는 게 기본입니다. 덧신은 일회용이니 부담없이 직원한테 다시 돌려주시면 됩니다. 들어가서 불도 켜보고 물도 흘려보면 좋겠지만, 청소 완료 스티커를 벗길 순 없으니 이쪽은 직접 확인이 어려운 부분이 있습니다. 전기는 저의 경우 공동주택으로, 계속 들어와서 켜볼 수 있었습니다. (청구인만 변경되는 듯) 천장에 조명기구가 없을 수 있습니다. 원래 없는 게 기본인데 전 주인이 은혜롭게 버리고 갔으면 그냥 쓰셔도 됩니다. 집을 방문해보면 주변의 시설물도 눈에 들어옵니다. 슈퍼는 어디에 있고, 은행은 얼마나 먼지, 자전거 거치대나 주차장, 가장 중요한 근처 전철역의 동선을 체크합니다. 실제로 부동산은 120m에 1분으로 기계적인 도보 시간으로 광고하고 있는데, 오르막이나 내리막, 철도건널목 같은 방해 요소를 잘 알아둬야 출퇴근의 난이도를 가늠할 수 있을 것입니다. 물론 철도역에 열차 등급과 배차 간격도 알면 더 좋겠습니다. 이건 구글맵에서 하면 편리하니 나중에 꼭 알아보시는 걸로 합시다.

6. 중요 사항 고지

계약을 진행할 뜻을 밝히면 중요 사항 고지를 위해 관련 자격이 있는 전문 직원이 등장하십니다. 이 분의 이름도 서류에 같이 실려 있고 인감도 찍혀 있습니다. 중요 사항 고지 용지를 준비하고 하나하나 구절을 읽어주시는데 아주 스피드가 빠르면서도 잘 이해했는지 착실히 확인하십니다. 내용은 주로 이 건물과 토지에 얽힌 부채 여부, 불법 사항, 준법 여부를 알려주는 내용이고, 그 다음은 건축물 수선의 책임 소재, 세입자가 지켜야 할 의무 사항, 해약의 조건 등을 나열하고 있습니다. 특히 반사회 집단 폭력배와 관련이 있으면 무조건 계약을 지속하지 않겠다는 의지가 담긴 내용이 눈에 띕니다. 그 외에 일대 지역에 대한 재해 지구 설정 상태, 지형상 위험 요소에 대한 설명과 함께 색칠된 지도를 확인하게 됩니다. 제가 구한 곳은 평야라 아무런 문제가 없네요. 애매한 표현이거나 뜻을 모르는 부분은 즉시 확인합시다. 질문이 있는지 페이지 단위로 다시 물어보시니까 쭈뼛거릴 필요가 없습니다. 이 분은 읊어주기 끝나면 바로 인감 두 장에 각각 찍으라고 하시고, 원래 자리로 돌아가십니다.

7. 계약

직원이 바쁘게 종이를 내밉니다. 집에 대한 계약서, 화재보험 계약서, 보증회사 계약서 등등 두 장씩 계속 작성할 내용이 많습니다. 설명을 잘 들으면서 진행하면 금방 끝납니다.

8. 이사 등 부가 서비스 신청

부동산 회사에서 추천하는 이사 서비스를 활용할 수 있습니다. 저는 단신으로 독립을 지향하고 있기 때문에 딱히 캐리어 이상으로 들고올 마음이 없어서 스킵하였습니다. 에이블의 경우에는 국제 이사 서비스도 제공하여서, 한국에서 가져갈 물건이 없는지 물어봐주었습니다.

9. 공공 서비스 등록하기

공공 서비스는 크게 세 가지가 있습니다. 각각의 회사가 미리 정해져 있으며, 그곳에 전화하면 됩니다. 요즘 도쿄전력과 도쿄가스가 별개 회사인데 각각 자기네들의 사업 영역을 넓혀서 도쿄전력이 가스도 영업하고, 한편으로 도쿄가스가 전기도 영업합니다.
귀부터 셋트 (도쿄전력)
묶어서 셋트 할인을 받으라고 유도하는데, 세입자가 그걸 결정할 권한이 없지 싶습니다. 일단 뭐든지 부동산 회사가 하라는 대로 진행합시다. 아니면 분명 곤란에 처하게 됩니다. 알려준 내용 중에 각각의 회사에 연락하는 프로세스가 있습니다. 미리미리 신청해두는게 좋습니다. 인터넷으로 등록 가능한 서비스가 있거든요. 하지만 이사 당일에도 전화만 연결된다면 (특히 가스 같은 경우) 별다른 스케쥴이 잡혀 있지 않다면 당일 중 바로 즉시 사용 개시를 신청할 수 있기도 합니다.

전기

도쿄전력의 경우 인터넷을 통해 사용 개시를 신청할 수 있습니다. 크롬으로 번역도 되고 전화 연결이 밀리는 것도 방지할 수 있어 추천하는 방법입니다. 다만 이번 달 언제부터 다음 달까지로 딱 정해진 기간에 대해 신청을 받습니다. 내 입거일이 그 안에 있으면 좋지만, 아니면 전화로 신청할 수밖에 없습니다. 전화로 신청하려고 보니 0120으로 시작하는 번호가 있네요? 0120 번호는 NTT 도코모 가입자 등 일본 국내 주요 통신사의 회선에서만 유효한 무료 대표 번호입니다. 혹시 휴대폰 가입이 안 된 분이라면 스카이프로 통화가 안 되니, 공중전화라도 찾읍시다. ARS가 나오면 使用開始(시요-카이시, 사용개시)라는 키워드를 잘 듣고 번호르 찾아 들어가야 합니다. MMS로 인터넷 신청 링크 받기라는 옵션 함정에 빠지지 말고 (그게 됐으면 진작 윗 단락에서 했겠죠) 상담원 연결을 눌러서 진행합니다. 알려달라는 내용은 다음과 같습니다.
  • 정확한 집 주소와 호수
  • 가입자 이름
  • 전화 번호 (없다고 해도 일단 진행은 가능합니다)
납부 방법은 별다른 말이 없으면 편의점 납부 가능한 지로 용지를 발송하는 것입니다.

수도

수도는 아직까지 민영화되지 않아서 시청 수도과에 연락하는 걸로 되어있습니다. 위와 비슷한 정보를 물어보는 것만으로 작업은 끝납니다. ARS 안내를 잘 들어야 합니다. 가나가와현은 두 달에 한 번 청구서가 온다는군요. 어째서인지 두 달만에 온 첫 청구서가 납부 내역 확인이라서 일단 두고보는 중입니다. (대신 납부 조항이 없었던 것 같은데…)

가스

가스도 도쿄가스의 경우 인터넷 신청이 가능합니다. 전기와 비슷한 방식으로 ARS 신청이 진행됩니다. 다만, 안전 점검을 받고 밸브를 열어주셔야 합니다. 기사 방문 일정을 상담원과 잡도록 합시다. 오시면 바로 가스함을 열어서 계량기의 이것저것 돌려서 체크하시고 계량기 현재값도 확인하십니다. 이어서 집에 들어와서 가스렌지 점검(IH곤로, 즉 인덕션 화구만 있다면 스킵), 급탕 패널 조작 후 급탕 동작 확인, 욕조 급탕 확인 후 내역서와 안전 책자를 건네주고 돌아가시게 됩니다. 물론 여기서 방문은 9번 열쇠 받기 이후에 이뤄지겠지요.

인터넷

에이블은 자체적으로 브로드밴드 담당이 있어서 며칠 뒤 전화로 인터넷 뭐 쓸 건지 물어보는 전화가 걸려왔습니다. 이 때 프로모션도 곁들여서 알아서 답을 찾아주기 때문에 참으로 편리합니다만… 몇 가지 문제가 있었습니다.
  • 전화로 확인할 게 너무 길다. 집전화도 없고 휴대폰도 마땅히 등록하지 않았는데 0120 번호로 걸려오다가 끊어진 탓에, 일본 국내 가입자가 아니면 이 번호로 전화를 다시 걸 수 없었습니다!
  • 그래서 공중전화로 다시 걸어서 아까 누가 걸었는지 알아내서 한참 대기하고 겨우 연결되고 그렇습니다만, 이 통화가 너무 깁니다. 공중전화에서 뒤에 줄선 사람들의 따가운 시선을 받아야 했네요. 귀도 얼얼했습니다.
  • 결정적으로 그리 싸지 않습니다. 차라리 대형 전자 상가에서 판매원의 상담을 받아보세요. 예를 들어 소프트뱅크는 와이모바일과 긴밀하기 때문에 BB 상품1으로 유선 가입시 월 금액을 모바일에서 할인해주고, 캐시백도 받고, 요도바시 카메라에선 요도바시 포인트도 적립해줬습니다. 판매원과 얼굴 맞대고 하니 실수하거나 혼동할 일도 적죠.

9. 열쇠 받기

열쇠를 받으러 갔더니 “시간이 참 빠르네요” 하면서 맞아주십니다. 열쇠를 받고, 계약서와 안내, 쓰레기 분리수거 안내까지 철저히 들어있는 책자를 건네주면서 다시 한 번 철저히 설명해주시네요. 월세 납부 방법을 알려주면서 마무리됩니다.

10. 입주!

드디어 집에 들어갔습니다. 미리 수속을 밟아놨다면 가스를 제외한 전기와 수도가 무난하게 들어오겠지요. 독립이라는 자유를 만끽합시다. 제균, 청소 완료 내역서가 놓여있고, 다양한 책자(전주인들이 예쁘게 두고 간 듯), 에어컨이 있다면 리모컨을 확인합니다. 소독 후 약재가 남아있을 수 있으니 충분히 환기를 합니다.

유의 사항

  • 본 글은 가나가와현(神奈川県) 야마토시(大和市) 주오린칸(中央林間)에 위치한 에이블 주오린칸점에서 계약을 진행한 것을 기준으로 합니다.
  • 유학생을 무척 불신하는 것 같습니다. “유학생은 안 돼! 더 나아가 외국인은 안 돼!” 하는 매물이 적지 않습니다. 보통의 매물이 2년의 계약 기간을 갖고 있으며, 2년이 아닌 것을 찾기가 어렵습니다. 이를 온전히 채우려면 안정된 수입을 갖고 월세가 밀리지 않아야 한다고 집주인들이 보기 때문인 것 같습니다.
  • 집주인이 왕입니다. 집주인의 룰을 지켜야 한다는 건 문서에도 익히 명시되어 있고, 퇴거도 가능하다고 하네요.

소감

  • 이틀에 걸쳐서 8시간 가까이 할애하여 선택을 하였는데, 시종일관 친절한 부동산 직원은 정말 베테랑인 것 같습니다.

이디야 커피랩 (Ediya Coffe LAB)

웬만한 스타벅스 리저브점보다 힘을 준 이디야커피의 고급화

입구부터 남다른 입장

문만 열어주시는 도어맨이 있다.

처음 입구 앞의 거대한 문을 보고 어딜 밀고 들어가야 하나 생각했는데 자동문처럼 열리는 것이 참 신기했습니다. 그리고 그 뒷편에서 열어주는 분이 있었다는 걸 뒤늦게 알고 당황해서 꾸벅 인사하게 되었네요.

나가는 사람, 들어오는 사람 모두 손을 쓰지 않고 오갈 수 있도록 힘을 써주고 계셨습니다.

넓은 점내

드넓은 공간의 1층, 2층이 모두 영업 공간입니다. 1층 센터에 자리잡은 바리스타 공간은 아일랜드 카운터처럼 고립되어 있습니다. 제조 과정이 윗층에서 내려다보이는데 참으로 투명하게 모든 것을 공개하고 있다고 볼 수 있겠습니다.

출입 금지

3층 계단은 이렇게 가로막혀 있지만, 애당초 1~2층의 수많은 테이블을 가득 채우기도 쉽지 않아 보입니다. 수용 인원은 결코 적지 않은데, 그러면서도 복닥거리지 않도록 충분히 공간을 두고 여유를 갖고 있는 점은 오래 머무르기에도 매력적입니다.

임베디드 만세

주문을 하면 준비될 때까지 호출기를 갖고 있게 됩니다. 호출기는 홍보 동영상이 나오고 있으며 상하 버튼이 있어서 볼륨 조절이 가능합니다. (친히 소리를 들으라는 의미…?) 준비가 완료되면 불이 들어오며 진동합니다.

커피의 선택지

5천원의 가치

아메리카노 2800원이라는 다른 이디야커피 영업점과는 차원이 다릅니다. 이곳의 아메리카노 아이스는 5천원부터 시작하며 사이즈가 크면 6천원입니다.

아메리카노의 원두를 고를 수 있는데요. 

  • 이디야 커피랩 1주년 블렌드
  • 에스프레소 블렌드 페르소나 

커알못은 전자가 산미가 있고, 후자는 약한 대신 부드럽다고 이해했습니다. 후자가 원래 다른 이디야커피에 좀 더 유사한 맛이 나는 것 같은데, 어느쪽이든지 맛은 확연히 다른 것 같습니다. 커피 색깔도 더 어둡지 않고 밝은 색깔로 투명한 모습이네요.

그리고 그 옆으로 이동하면 직접 내린 드립 커피가 가득합니다. 원하는대로 원두를 섞어서 블렌드를 만들어낼 수도 있는데, 잘 모르면 추천 레시피에 따르라고 나무위키에 나와 있습니다.

저는 커피의 사소한 차이에 민감하지 않은 터라, 돈은 빵에 더 써보기로 결정했습니다.

다양한 베이커리

사실 이곳의 주력 상품은 빵이 아닌가 싶습니다. 점내에 매대는 빵과 디저트에 더 힘을 쏟은 모습입니다.

겉보기에 맛있어보이긴 한데, 가격은 결코 만만하지 않습니다.

빵을 쟁반에 담아서 주문대가 가져가면 음료를 추가로 골라서 주문이 완성됩니다. 픽업대가 두 군데 있으며, 음료만 받는 인원과 분리되는 것 같습니다. 빵은 포장하지 않으면 먹기 편하게 잘라서 제공됩니다.

작업 환경

넓은 점내 공간 덕분에 노트북 작업이 편하리라 생각하시겠지만, 의외로 전기 콘센트는 많지 않습니다. 2층 원형 계단 바로 앞에 자리잡은 넓은 사각 테이블에는 모든 자리에 콘센트가 돌아갑니다만, 이곳에서 조금 떨어진 대형 사각 테이블에는 콘센트가 전혀 없습니다.

2층의 벽면에 있는 소파 자리에 테이블이 딸린 곳은 소파 아래에 자리마다 콘센트가 자리잡고 있어서 양호합니다. 그러나 원형 테이블이라 노트북의 마우스를 놓기엔 불편해보입니다.

그 외에 부분부분 벽면 콘센트에서 닿을 수 있을 거 같은 테이블이 몇 군데 보이긴 합니다만, 그런 곳의 비율은 낮은 편입니다.

위에서 언급한 대형 테이블조차 사람이 가득차는 경우는 드문 편이니, 노트북 자리를 찾는데 난이도가 결코 높은 건 아니라고 생각합니다. 아마 여러분이 앉을 자리는 충분히 있을 겁니다.

편의 시설

2층에 화장실이 있습니다. 크지도 작지도 않은 수용 인원의 평범한 공중화장실입니다. 남자화장실의 경우 소변기 위에 향수가 강력합니다.

세면대 수도꼭지가 고풍스런 디자인으로 돌려야 물이 나오는 점은 사용에 불편합니다.

총평

마늘바게트 1800 + 퀴니아망 2700 + 피자바게트 4800 + 아메리카노 5000 = 14300원

한 달에 한 번은 와볼만 한 것 같습니다.

빵이나 커피나 모두 가격이 어느 정도 있고, 커피가 일반적인 스타벅스보다도 비싸니 어쩔 수 없는 선택이긴 합니다. 그럼에도 이곳의 소란스럽지 않다는 점, 어느 정도 여유가 있는 공간 구성, 작업에 편리한 점내 환경을 생각하면 충분히 가치를 하기 때문입니다.

이 근처에 올 일이 잦다면, 다양한 블렌딩도 도전해보고, 빵도 곁들이면서 커피에 탕진하는 재미도 있을 것 같습니다. 그저 돈을 많이 번다면 좀 더 재미있게 즐길 수 있을 것 같습니다.

주오린칸(中央林間) 핸즈카페 에토모 주오린칸점

ハンズカフェ エトモ中央林間店

핸즈카페 에트모
가격: ¥¥
연중무휴 오전 10시 ~ 오후 9시

이름 모를 디저트 (한정)에 대하여…

한정 메뉴인데 메뉴를 적지 못해서 알 수 없다는 게 안타까운 일입니다.

점내가 넓고 편안합니다. 직전에 갔던 오토야 음식점보다 더 넓은 듯.

다음에 간 곳

  • 모스버거 주오린칸키타구치점

주오린칸(中央林間) 오토야(大戸屋) 일식 음식점

大戸屋

오토야 Ōtōya
가격: ¥¥
연중무휴 오전 10시 ~ 오후 11시

도큐 덴엔토시선의 종착역 주오린칸역 역사 2층에 위치하고 있는 일식 음식점입니다.

가게 전면에 샘플 요리가 잔뜩 있고, 선택지가 상당히 많습니다. 샐러드,  카레 덮밥, 튀김, 생선, 정식 메뉴, 디저트까지 모든 것을 망라하고 있습니다.

정식의 가격이 결코 저렴하진 않지만, 그렇다고 퀄리티에 비해서 비싼 건 아닙니다.

주문시에 특이한 점은, 밥에 대한 커스터마이징이 가능하다는 것입니다. 기본적으로 밥 양을 많게, 보통, 적게로 고르는 것 외에도 오곡밥과 흰쌀밥 두 가지를 고를 수 있다는 점이 특이합니다.

점원과 대화가 안 된다면 이것이 의외로 복병일 수 있겠네요. 그냥 후쯔으, 시로코메 외치면 흰쌀밥 일반 사이즈가 나올 겁니다.

자리에 앉으면 시원한 물과 따뜻한 차 둘 다 준비해줍니다. 선택지가 있다는 건 참 좋은 것이죠. 찬 물이 성에 안 차는 분들도 있을테니까요.

안쪽 드링크바

드링크바를 갖고 있어서 자유롭게 커피나 차를 타거나, 우측의 탄산음료 디스펜서에서 음료를 따라 마실 수 있습니다.

컵이 서랍 안에 있는데, 무한 리필로 여러 번 마실 수 있다는 모양입니다.

그러나 인별로 드링크바 이용 비용을 지불해야 합니다. 300엔 정도로 기억합니다. 생각해보니 음료가 그렇게 음식과 어울리는 건 아닌데 별도로 구매할 필요가 있었나 살짝 후회되더군요.

맥주도 있습니다. 먹어보지 않아서 뭐라 말할 내용이 없네요.

역시 조리예가 상식적으로 통하는 일본이다 싶은, 상당히 정석적인 구성을 갖고 있습니다.

점원 친절도가 미묘합니다. 알바가 많은 대인원의 가게인 편인데, 전문성이 높다는 느낌이 들지는 않습니다.

점내는 적당히 넓은 편이고, 벽으로 나뉜 4인석과 2인석이 골고루 섞여 있습니다. 디저트가 목적인 고객도 놓치지 않기 위한 것이겠지요.

다음에 간 곳

  • 주오린칸 핸즈카페 에토모 주오린칸점

라쿠텐 은행 카드 정리

라쿠텐 은행?

취직해서 가는 일본인데, 회사에서 자사 은행을 쓰라 하는 곳은 보다보다 처음 보는 것이긴 합니다. 카카오에 취직하려면 카카오뱅크의 계좌를 만들어서 월급을 받아가렴 하고 강제하는 것에 비유하면 비슷하지 않을까요?

그런 비유가 어쩐지 매우 잘 맞아 떨어진다고 보는 것이, 라쿠텐 은행 또한 이뱅크 은행을 전신으로 갖고 인터넷 은행으로 출범한 것으로 한국의 카카오뱅크와 꼭 닮았기 때문입니다. 그리고 일본 최대의 유통 업체 라쿠텐을 끼고 있다는 점과 IT 기업의 금융업 진출이라는 유사점도 있고요.

어떻게 신청하는가는 직접 경험하지 않으면 모릅니다. 아직 안 만들었으니 이에 대해서는 추후 겪고서 포스팅을 하기로 하지요.

라쿠텐 은행에 카드를 같이 골라야 하는데

이렇게나 선택지가 다양하다. 크게 위에서부터 뜯어볼까요.

  • 직불카드 기능 포함 (체크카드와 유사)
  • 신용카드 기능 포함

그리고 모두 다 검은 글씨로 캐시 카드, 즉 현금 카드라고 적혀 있다. ATM에서 받아들인다는 소리네요.

직불카드의 종류

라쿠텐 은행 팬더 데빗 카드 (JCB)

라쿠텐의 캐릭터 팬더가 등장하는 카드. 여러모로 회사에서도 전면에 내세우는 카드입니다.

  • JCB 데빗 카드라면, 어디서든 100엔에 1포인트 적립
  • 야간, 휴일에도 ATM 수수료 무료
  • 1000엔당 10포인트(100엔당 1포인트)의 라쿠텐 슈퍼 포인트 부여
  • 평생 연회비 무료
  • 단순 데빗 카드에서 팬더 데빗 카드로 변경시 540엔의 수수료 부과
  • (캠페인) 카드 신청 후 이벤트 페이지 엔트리한 다음, 3500엔 상당의 JCB 가맹점 쇼핑 후 1000포인트 부여
    • 신규 입회 특전 300포인트 + 이용특전 700포인트
    • 이 기간은 회차별로 다르니 반드시 관련 페이지를 참고

라쿠텐 은행 데빗 카드 (JCB)

  • 상동

라쿠텐 은행 골드 데빗 카드 (Visa)

  • 연회비 3086엔 (세금 포함)
  • 1000엔당 5포인트의 라쿠텐 슈퍼 포인트 부여

라쿠텐 은행 데빗 카드 (Visa)

  • 연회비 1029엔 (세금 포함)
  • 1000엔당 2포인트의 라쿠텐 슈퍼 포인트 부여

신용카드의 종류

라쿠텐 은행 카드

  1. 이용자: 라쿠텐 은행 개인보통예금계좌를 갖고 있는 18세 이상 (고등학생 제외)이며, 당행 및 라쿠텐 카드로부터 전화 연락이 가능한 고객
  2. 결제 계좌: 당행 보통예금계좌
  3. 신청 방법: 당행 웹 페이지에서 신청 가능
    1. 라쿠텐 수퍼 포인트 수여에는 라쿠텐 회원 링크 등록에서 등록해야할 필요가 있음
    2. 카드 신청시 라쿠텐 카드가 정한 자격 및 소정의 심사가 필요
  4. 서비스 내용: 당행이 발행하는 현금카드 및 라쿠텐카드가 발행하는 신용카드 기능을 한 장에 제공하는 것
    1. 현금 카드 기능
      1. 제휴 금융 기관 ATM에서 입출금 및 잔액 조회가 가능합니다.
        1. 이용 가능 시간은 제휴 금융 기관에 따라 다릅니다.
        2. ATM 1일 출금 한도는 50만엔입니다.
          1. 계좌 개설 후에는 ATM에서 1일 출금 한도액은 50만엔으로 설정되어 있습니다.
          2. 당행 웹사이트에서 로그인 후, 천엔~50만엔 범위에서 1000엔 단위로 변경할 수 있습니다.
          3. 50만엔을 넘는 한도 설정을 희망하는 분은 고객 센터에 연락하십시오. 연락 당일에 한해 100만엔까지 범위로 일시적으로 상향해드립니다.
          4. 또한 당행의 판단에 따라 한도 상향을 거절할 수 있습니다.
    2. 신용 카드 기능
      1. 이용 방법
        1. 국내, 국외 JCB 취급 점포 및 서비스에서 쇼핑에 사용합니다.
        2. JCB 및 Cirrus 마크가 있는 해외 ATM에서 현금 수납에 이용합니다.
      2. 지불 방법
        1. 일괄 지불, 2회 지불, 3분할 지불, 리볼빙 지불, 보너스 지불
      3. 이용 시간
        1. 24시간 365일
          1. 시스템 관리 등의 예외를 제외합니다.
      4. 이용 가능 범위
        1. 라쿠텐 카드의 심사에 의해 결정됩니다.
  5. 수수료
    1. 연회비: 무료
    2. 신규 발행 수수료: 무료
    3. 재발행 수수료: 무료
  6. ETC 카드
    1. 라쿠텐 은행 카드를 신청하는 분은, 희망에 따라 ETC 카드를 병행할 수 있습니다.
    2. 연회비: 540엔 (세입)
    3. 라쿠텐 ETC 카드 신청 시점의 라쿠텐 PointClub 랭킹이 다이아몬드, 플래티넘인 회원은 초년도 무료.
    4. 해약 후에도 한 번 낸 연회비는 반환하지 않음.
  7. 특전
    1. 카드 쇼핑 이용으로 라쿠텐 슈퍼 포인트를 부여합니다. 부여 조건은 다음과 같습니다.
    2. 100엔 이용 금액에 1포인트
  8. 유효기간, 갱신에 대해
    1. 유효기간은 고객의 4번째 생일 말일입니다.
    2. 학생은 졸업 예정 년도 11월 말일입니다.
    3. 유효 기간 도래 약 2개월 전에 카드 갱신 판정이 내려져서, 카드 갱신 가부가 결정됩니다. 새로운 카드는 당행에 제출한 주소로 우편으로 보내집니다.
    4. 갱신 카드의 우편 정보가 실제와 다른 경우, 갱신 카드가 도착하지 않고, 그 후 강제 퇴회되므로 주의하세요. 그 경우 현금 카드 사용이 불가해집니다.
  9. 그 외 유의사항
    1. 이름, 주소 등 당행에 제출한 등록 정보에 변경이 있는 경우 신속히 알려주세요.
    2. 계좌를 해약하는 경우, 미리 당행 카드 해약 수속을 밟은 후에, 계좌 해약을 진행해주세요.
    3. 포인트 특전 등 서비스 내용은 예고 없이 변경될 수 있습니다.
    4. 비밀번호는 절대 타인에게 노출되지 않도록 주의하세요. 또한, 생년월일과 전화 번호 등 제 3자가 쉽게 추측할 수 있는 번호를 사용하지 않도록 부탁드립니다.
  10. 당행이 계약하고 있는 지정 분쟁 해결 기관
    1. 일반사단법인 전국은행협회
    2. 연락처 전국은행협회상담회 전화번호 0570-017109 또는 03-5252-3772

라쿠텐 은행 죤 카드

  • 대부분 상동인데, 카드 발급처가 규슈 카드
  • 브랜드가 Visa
  • 연회비 무료
  • ETC 신규, 재발급시 수수료 1000엔 + 세금
  • 쇼핑시 부여 포인트는 1000엔당 월드 프레젠트 1포인트
  • 유효 기간 5년

라쿠텐 은행 세디너 카드

  • 대부분 상동, 카드 발급처는 세디나 카드 (현 미쓰이쓰미토모 계열사)
  • 연회비 1905엔 + 세금
  • 1000엔당 와쿠와쿠 5포인트(200엔당 와쿠와쿠 1포인트) 부여
  • ETC 신규, 재발급시 수수료 1000엔 + 세금
  • 유효기간 5년

현금 카드의 종류

라쿠텐 은행 캐시 카드

  • 발행 수수료 무료

소감

공통 혜택으로 보이는 것이 또 하나 있는데, 라쿠텐 카드 이용시 보통예금이 금리 2배가 된다네요. 또한 인출이 있는 것만으로 최대 9포인트의 라쿠텐 포인트를 제공한다고 합니다.

혜택은 어쩐지 답정너 같이 한 곳으로 몰리는 것 같습니다. 비싼 연회비가 값을 하는지 잘 알기가 어렵네요. 라운지 무료 입장이라든지 그런 프리미엄 카드도 있다고 들었는데, 라쿠텐 은행과 연계되지 않았는지 여기서는 전혀 소개가 없습니다.

무엇이 이득인지 자세히 따져봐야할 대목입니다.

日本のキャリア周波数LTEバンド、韓国と比べてみた

これに関して、すでに色々まとめがネット上に公開されておりますが、実は筆者が検索に面倒がっているので、一度書いてみました。

周波数の代わりに、同じ周波数なのに交換性が異なる問題を防ぐため、バンドの別称を使って表記しています。

日本のLTE周波数

NTT Docomo

ドコモは日本の最大キャリアです。公企業であったときもあるので、韓国のKTと共通している部分もあり、比較されます。ドコモが日本での利用者数一位であるものの、韓国の一位はKTではなく、SKTです。韓国移動通信という社名でもっとも早く始めたからでしょう。

ドコモユーザーはKTでローミングができます。

  • バンド 1 (2.1GHz):全国で使用中、グローバル周波数
  • バンド 3 (1.8GHz):全国で使用中、グローバル周波数
  • バンド 19 (800MHz) ⊃ バンド 6 (バンド 5,6,18,19を含める):プラチナバンド、速度は遅い方ですが、地方で電波中継塔の数を減らせます。
  • バンド 21 (1.5GHz)
  • バンド 28 (700MHz):グローバル周波数、新しく開拓された周波数ですが、韓国では放送局と分けて使うことに決定された一方、放送周波数との干渉の恐れで韓国では使われなくなりました。
  • バンド 42 (3.5GHz、TDD)

Softbank

利用者は一番低いですが、ある程度の需要を持っています。割引要因があるらしいです。

Softbankユーザーは韓国のSKTでローミングができます。

  • バンド 1 (2.1GHz):全国で使用中、グローバル周波数
  • バンド 3 (1.8GHz):全国で使用中、グローバル周波数
  • バンド 8 (900MHz)
  • バンド 28 (700MHz):グローバル周波数
  • バンド 41 (2.5GHz、TDD)
  • バンド 42 (3.5GHz、TDD)

KDDI au

CDMA(JCDMA)で一番長く奮闘してきたキャリアです。韓国のLG U+と共通点で、CDMAを捨ててLTEに移行中であることです。そして、韓国ではWiBroと知られているWiMax IIを今もサービス中です。したがって、一部の韓国の旅行者の間ではWi-Fiルーターの会社として認識されています。

KDDIユーザーはLG U+でローミングができます。

  • バンド 1 (2.1GHz):全国で使用中、グローバル周波数
  • バンド 11 (1.5GHz)
  • バンド 18 (800MHz)
  • バンド 26 (800MHz) (バンド 19を含む)
  • バンド 28 (700MHz):グローバル周波数
  • バンド 41 (2.5GHz、TDD):WiMaxに使用 (別途サービス)
  • バンド 42 (3.5GHz、TDD)

Rakuten Mobile (追記)

2019年10月から常用サービスに取り組む楽天モバイルはもともとMVNOキャリアで、ドコモが母回線です。これからは第4キャリアとしてメジャーキャリアの業界に挑みます。他社とは逆に5Gの上に4Gが乗っている形のネットワークを構成しているということです。現在割り当てられた周波数は次のように一つの身となっています。

  • 1.7GHzの追加割り当て

ただし、エリアの問題を突破するため、3G無しでLTEから始めたauとのローミングでサービスに捕捉する予定だそうです。auの周波数も同時に使わなければならないでしょうね。

韓国のLTE周波数まとめ

SKT

バンド 3、バンド 7に幅広い帯域幅を持っていて、バンド 1とバンド 5は補助役です。2016年の周波数オークションで、バンド 1はLG U+に一部取られました。

  • バンド 1 (2.1GHz):2016年一部返納。WCDMA HSPAと同じ周波数を一部転換. グローバル周波数
  • バンド 3 (1.8GHz):グローバル周波数
  • バンド 5 (800MHz):ゴールド周波数、グローバル帯域ではない
  • バンド 7 (2.6GHz):グローバル周波数

KT

2016年のオークションでバンド 3の帯域幅が広がり、バンド 8は補助しています。

  • バンド 1 (2.1GHz):WCDMA HSPAの一部転換予定。グローバル周波数.
  • バンド 3 (1.8GHz):グローバル周波数。CDMA PCSの帯域を転換。主要周波数.
  • バンド 8 (900MHz):GSM変換帯域として未来があると見込まれていたが、グローバルですらない周波数。KTユーザーは建物の中で使われる傾向がある。
  • バンド 26 (800MHz):会社の買収により得た周波数。電波中継塔なし。交換性なし。活用の計画なし。

LG U+

SKTから得たバンド 1とバンド 7両方広い帯域幅で、快適だという評判です。

  • バンド 1 (2.1GHz):WCDMA HSPAと同じ周波数。グローバル周波数。
  • バンド 5 (800MHz):VoLTEの通話に使われる主要周波数。
  • バンド 7 (2.6GHz):LTE8を構成する圧倒的な周波数。

そろそろTDDの周波数にも目を向けてほしいです。すでに5Gとか言って、色々周波数を集めていますが、これのどこまでが今の利用者のためになるかはまだ分かっておりません。

FAQ

バンドはサポートされているのに、なぜ繋がらない?

携帯の設定が必要とする場合があります。サービスモードでキャリアに必要なバンドをすべて使うようにしたか、どのバンドを最初に使うかの設定も見直す必要があります。

過去にはAPNに正しくないとアンテナマークは問題がないのに、ネット使用が不可能な時が多かったです。しかし、最新の端末では、APNをすでに搭載しているので、SIMカードの情報で自分で設定を行います。

なのに、VoLTEが広まった今、また設定に悩む時代になりました。

VoLTEの使用は不可能か?

KDDI auは他社の同じく3Gを使っていないため、VoLTEは選択ではなく、必須になっています。大体の端末は別途の設定を必要としていませんが、問題となる端末も少なくありません。韓国でもLG U+が全く同じ状態です。

逆に日本の他社もVoLTEを提供していますが、このオプションがさらに難しいです。3G通話ができるから、わざと設定を入れていません。成功した方の説明通りに従うしか方法がありません。できない場合がほとんどですが。

MVNOはどうですか?

韓国では『アルトゥルフォン(알뜰폰)』と呼ばれています。通信網再販売業者は大手のキャリアから予め回線を買い取り、経済的な価格でサービスしています。今までは会社ごとに特定のキャリアを使っているから区別も簡単でしたが、最近は二つ以上のキャリアの回線をサービスしている会社も増えてきました。

日本でも、元のキャリアはどこなのか検索したら、すぐ分かることができます。複数のキャリアからのサービスがある場合、同じ料金プランでもaプラン、dプラン、sプランと書いています。これはそれぞれ元のキャリア(au, docomo, softbank)を表していることもご存知でしょうか。価格も異なるから、比較はますます重要になってきます。

もちろん、日本も韓国も、元のキャリアの技術的特徴に従って端末を選ぶべきですね。

あとがき

最近のスマホは1、3、5、7、8、11、…などなどでサポートしているバンドの表記をしている端末の製造者が多くなりました。そういう製品の説明を理解して、国とキャリアでの使用ができるかを自分で調べることも簡単です。

グローバル周波数とはFDD 1、3、7、28 / TDD 38、40をいいます。

Asus Zenfone 5z アンボクシング

ASUSがスマホを作っている

そういうことは日本人なら、MVNO格安SIM UNLOCKに興味がある方なら、誰でも分けっていると思います。Asusから作り出したスマホを手にした人も少なくないでしょう。

一方、過去のASUSスマホをご存知でしょうか。つまり、Asus Zenfone 5のことです。

そのときのレビューをどこかに書き込んだりはしませんでしたが、今になって写真を見ているとまさに四角い奇妙なデザインを持っていますね。

画面の裏の部分を開けますが、バッテリーの交換は普通にできないようになっています。

また、初めからDual Sim型のみを販売しています。当時は3G対応一つ、2G(GSM)対応をそれぞれ用意していて、実際に日本でDual Simとして使うことはできませんでした。日本での2G技術が他の国と違っていたからですね。3GのDual待機ができたなら、もっと愛されたかも知れません。

2014年の当時はなかなか良い方だったものの、LTEの時代になり、GSMも二世代も古い技術になった今、サービスも中断になる国も増えているし、変化が必要だったと思います。

そういう短所に触れてから、Dual SIMに対する自分も期待もかなり裏切られたとも言えるでしょう。

LG Optimus LTE, Galaxy S3, ASUS Zenfone 5 (2014) ベンチマーク

Intel Atom Z2580チップセットを使っていますが、x86命令セットにarmのエミュレーターが実装されているそうです。

それにもかかわらず、一部のゲームは交換性に問題がありました。曖昧な性能に、曖昧なバッテリー、少なくない発熱が印象的な経験でした。なぜ自分勝手に熱く燃えてきたのか、今もわかりません。(そういう伝統はLG V20が相次いでいたような…)

細かく言うと5GHz WiFiもサポートされてませんでしたね。

ASUS Zenfone 5の4年後のスマホがASUS Zenfone 5だと?

私が買った機種は正確には末にZが付いていますが、メインラインであるSnapdragon 660を搭載したものはZenfone 5なので、全く変わりがありません。

これは「どうしてこうなった」と言えるところでしょう。

したがって、今もググるとAsus Zenfone 5 (2014)とAsus Zenfone 5 (2018)に分けられます。

名前は同じですが、ほとんどすべてが変わりました。

遠い香港からの輸入を示すような重装備のパッケージから取り出した製品のパッケージは長くて細い形をしています。

上にパッケージのカバーを取り出すと写真が好きだというASUSの主張が書いていますね。

기본으로 ジェリーケース(透明)が付いています。中国のスマホではありませんが、こちらにはこういうサービスが普通らしいですね。

台湾の会社も同じだったんでしょうか。

SIMトレイのクリップも個性的だと思います。

無くさないようにしまっておきます。

シリコンケースと保証書類を取り出すと、プラスチックカーバーの中の本体が姿を現します。

縦に長いスマホがあまり透明ではない袋の中にあります。電源ボタンがどこなのか、アイコンのハイライトが見えます。

当然ながら、本体には書いていません。

パッケージの下の部分にはフリーボルト0.5Aインプットの充電器(アウトプット5V/2A+9V/2A)、データーケーブル、イヤホンがあります。

後ろは何か輝いています。グラスで包んでいるのか、金属の感触は全くなく、指紋は触ったとたん跡がついてしまいます。

ケースがなければ、後でべたべたになるので、こういった素材を避ける方もいらっしゃるかと思います。

真ん中のLGスマホのような指紋認識デバイスが見えます。人差し指が最適です。

違いがあるとしたら、電源ボタンなどの役割がない、固定された部分ということです。

ボタンの形をしているのに、ボタンではありません。

上部には特に何もありません。穴がありますが、これはマイクでしょう。左側にも特に何もありません。マイクのように見える穴がもう一つあります。

SIMカードを入れられるトレイとピン穴があります。ハイブリッドDualSIMなので、MicroSDと一緒にSIM2を使えません。しかし、こういったDualSIMとMicroSD両方を使いたい方なら、あるアイテムを使うと簡単にできるので、是非参考してください。下部は左からイヤホン端子、USB C-Type ポート、右にモノスピーカーがあります。

しかし、普段からステレオで聞けます。受信部のスピーカーも機能しているからです。スピーカーの特徴が違うので、音の調和がいいとは言えませんが、音域が違うから、カバーできる音の幅が広くなるというメリットはあるでしょう。右側には上からボリューム、電源ボタンが間を持って配置されています。

昔も今も、ASUSというロゴデザインは重みがあるのでは、と思います。Powered by Androidという文字の直後に見えます。ブートスピードはあまり遅くない方です。

ASUSはハイバネーションと近い技術のラム保存ブートを昔から導入したと知られています。今回もそうか確かではありませんが。

Android Oreo 8.1 バージョンがオリジナルデザインはあまり分かっておりませんが、修正が多くない方だと思います。シンプルで綺麗なUIを誇っていると思います。韓国語で設定しましたが、日本語も対応してます。日本でもMVNO格安プロバイダーでは、一や二を争っているお勧めのAndroidスマホで売られていますね。

韓国ではなぜ売られていないか、聞いてみたいほどのローカライズのいいスマホです。

これは韓国語の画面で、通話記録という表現に誤字があるところです。文法も不自然なところがありますね。

すでに使っていた携帯からデータのマイグレーションを簡単にWi-Fiダイレクトで済ませます。

ただ、Googleのリカバリーをしているなら、アプリを同時にインストールしようとするときがあります。その時に、エラーで中断になりますので、ASUSのアプリを後に使うということもありですね。

初期画面やほかのレビューは続編で続きます。

ゲーム機としての活躍も今後期待できそうです。

[번역글] 2. 인증서 투명성 작동 방식

이전글: 1. 인증서 투명성 (Certificate Transparency) 개요

인증서 투명성이 작동하는 방식

인증서 투명성은 세 가지 기능을 현행 SSL 인증서 시스템에 추가합니다.

  • 인증서 로그
  • 인증서 감시자 (monitors)
  • 인증서 감사자 (auditors)

이들 기능 구성 요소는 서비스를 보완적으로 감시하고 감사할 수 있는 분리된 소프트웨어 모듈을 나타냅니다. 현행 SSL 인증서 시스템을 대체하거나 교체하는 것은 아닙니다. 실제로, 이들 구성 요소는 클라이언트가 도메인을 검증하고 서버와 안전한 연결을 맺는 기본적인 신뢰 체인 모델을 바꾸는 것이 아닙니다. 대신에, 전체 SSL 인증 시스템에 대한 공개적인 관찰과 조사 지원을 제공하는 신뢰 체인 모델로 강화합니다.

기본 로그 방식

인증서 투명성 시스템 중심에는 인증서 로그가 있습니다. 인증서 로그는 SSL 인증서에 대한 자료를 유지하는 간단한 네트워크 서비스입니다. 인증서 로그는 세 가지 중요한 특징이 있습니다.

  • 추가만 가능: 인증서는 로그에 추가될 수만 있습니다. 인증서는 제거되거나, 수정되거나, 로그에 일괄 삽입되지 않습니다.
  • 암호화 보장: 로그는 Merkle Tree Hash라고 하는 특별한 암호화 방식을 사용하여 조작과 오동작을 방지합니다.
  • 공개 감사 가능: 누구든지 로그를 조회하고 올바르게 동작하는지 검증하고, SSL 인증서가 적절하게 로그에 추가되었는지 검증할 수 있습니다.

로그 수는 많을 필요가 없습니다. 충분한 수의 로그가 있으므로 로그 실패나 일시적인 접속 불가가 문제가 되지 않습니다만, 감시하기에 어려울 정도로 많아지지 않게 하세요. 이를테면, 10개보다 많지만 1000보다 적게 하세요. 각 로그는 다른 로그와 독립적으로 작동합니다. (즉, 로그 사이 자동 복제가 없다는 것입니다)

추가만 가능한 로그는, 로그가 손상되지 않았고, 로그 작성자가 로그에서 어떤 인증서도 제거하거나 변경하지 않았다는 것을 증명하는 특별한 암호화 해시를 사용할 수 있게 합니다. 이 특별한 해시(Merkle Tree Hash로 알려짐)는 감사자가, 누군가 로그를 분리했거나 오래된 인증서를 로그에 삽입하였는지 탐지할 수 있게 합니다. 더 자세한 정보는, 로그가 작동을 보장하는 방법을 보세요.

모든 인증서 로그는 반드시 (다른 것과 함께) URL과 공개키를 송출해야 합니다. 누구든지 HTTPS GET과 POST 메시지를 통해 로그와 상호작용할 수 있습니다.

기본 로그 작동

누구든지 인증서를 로그에 전송할 수 있지만, 대부분의 인증서는 인증 기관과 서버 관리자에 의해 전송될 것입니다. 누군가 올바른 인증서를 로그에 전송하면, 로그는 인증서를 로그의 어떤 시간에 등록했는지 간단히 보증하여 알려주는, 서명된 인증 타임스탬프(SCT)로 응답합니다. 이 시간은 최대 병합 지연(MMD)로 알려져 있습니다.

MMD는 합리적인 시간 내에 로그 서버가 인증서를 로그에 추가하도록 하며 로그가 복원력과 가용성을 위해 분리된 서버 집합을 실행할 수 있도록 허용하면서 인증서의 발급 또는 사용을 차단하지 않습니다. SCT는 인증서의 수명동안 인증서와 함께 제공됩니다. 특히, TLS 서버는 TLS 핸드쉐이크가 일어나는 동안 SCT를 인증서와 함께 전송해야 합니다.

인증서 투명성은 SCT를 인증서와 함께 제공하는데 세 가지 방법을 지원합니다. 각각은 아래에 설명되어 있습니다.

X.509v3 확장

인증 기관은 X.509v3 확장을 사용하여 SCT를 인증서에 첨부합니다. 1번 그림은 이 방식을 나타냅니다. 인증 기관은 로그에 사전 인증서를 전송하고, 로그는 SCT를 반환합니다. 인증 기관은 이어서 SCT를 사전 인증서에 X.509v3 확장으로서 첨부하고, 인증서를 서명하고, 인증서를 서버 운영자에게 제공합니다.

이 방식은 서버 변경을 필요로 하지 않으며, 서버 관리자가 SSL 인증서를 기존에 해오던 방식과 똑같이 관리할 수 있도록 합니다.

TLS 확장

서버 운영자는 SCT를 특별한 TLS 확장(그림 2 참고)을 통해 전달할 수 있습니다. 이 경우, 인증 기관은 인증서를 서버 운영자에게 발급하고, 서버 운영자는 인증서를 로그에 전달합니다. 서버 관리자에게 전달되고, 서버 관리자는 signed_certificate_timestamp 타입의 TLS 확장을 사용하여 TLS 핸드쉐이크 도중에 클라이언트에 SCT를 제공합니다.

이 방식은 인증 기관이 SSL 인증서를 발급하는 방식을 그대로 유지할 수 있게 합니다. 그러나, TLS 확장을 수용할 수 있도록 서버를 변경해야 합니다.

OCSP 스테이플링

서버 운영자는 SCT를 온라인 인증서 상태 프로토콜(OCSP) 스테이플링을 사용하여 전달할 수도 있습니다 (그림 2 참조). 이 경우, 인증 기관은 로그 서버와 서버 운영자 양쪽에 동시 인증서를 발급합니다. 서버 운영자는 OCSP 쿼리를 인증 기관에 보내고, 인증 기관은 SCT와 함께 응답하여, 서버가 TLS 핸드쉐이크할 때 OCSP 확장을 포함할 수 있게 합니다.

이 방식은 SCT를 비동기적으로 얻을 수 있으므로, 인증 기관이 SCT에 대한 관리 책임을 가질 수 있게 하면서도 인증서 발급에 지연을 일으키지 않습니다. 그러나, OCSP 스테이플링을 할 수 있도록 서버를 수정해야 합니다.

기본 감시자와 감사자 작업

감시자는 출처가 불분명하거나 신뢰되지 않은 인증서, 비정상적인 인증 확장 또는 이상한 권한(예를 들어 인증 기관의 인증서)을 갖고 있는 수상한 인증서를 로그에서 감시합니다. 감시자는 로그에서 모든 로그된 인증서를 검증할 수 있습니다. 로그에 추가된 새로운 항목을 주기적으로 모두 가져오는 방식으로 이런 일을 할 수 있습니다. 그 결과, 대부분의 감시자는 감시하고 있는 거의 완전한 로그를 갖게 됩니다. 로그가 일정 시간 이상 오프라인이고, 감시자가 로그의 복사본을 갖고 있다면, 감시자는 읽기 전용 로그의 백업으로 동작할 수 있고, 로그를 쿼리하려고 하는 다른 감시자와 감사자에게 로그 데이터를 제공할 수 있습니다.

감사자는 로그의 전체 투명성을 검증합니다. 일부 감사자는 특정 인증서가 로그에 등장하는지를 검증할 수 있습니다. 로그 증명을 주기적으로 가져오고 검증하는 방식으로 진행합니다. 로그 증명은 로그가 올바른지를 증명하는데 쓰이기 위해 암호화된 해시로 서명됩니다. 모든 로그는 반드시 요청시에 로그 증명을 제공해야 합니다.

감사자는 로그의 오래된 항목에 새로운 로그 항목이 항상 추가된다는 것, 인증서가 손상되거나 중도에 추가 또는 삭제, 수정되지 않았다는 것을 검증하기 위해 로그 증명을 사용할 수 있습니다. 감사자는 또한 특정 인증서가 로그에 존재한다는 것을 보이기 위해 로그 증명을 쓸 수 있습니다. 이는 인증서 투명성 프레임워크가 모든 SSL 인증서를 로그에 기록해야 하기 때문에 특히 중요합니다. TLS 클라이언트가 (감사자를 통해서) 인증서가 로그에 없다는 것을 알게 되면, 로그가 올바르게 동작하지 않았다는 증거로 로그의 SCT를 사용할 수 있습니다. 자세한 정보는 로그 증명이 작동하는 방법을 살펴보세요.

로그 증명은 감사자나 감시자가 특정 로그에 대한 자신의 관찰 내용가 과거의 관찰 내용이 일치 하는지를 검증할 수 있게 하는 한편, 특정 로그에 대한 관찰 내용이 다른 감시자 및 감사자와 일치하는지 확인해야합니다. 이 검증을 하기 위해, 감사자와 감시자는 gossip 프로토콜을 통해 로그에 대한 정보를 서로 교환합니다. 이는 발췌된 로그를 탐지하기 위해 감사자와 감시자를 돕는 비동기적 의사소통 통로입니다.

일반적인 시스템 구성

인증서 투명성 프레임워크는 기존의 SSL 인증서 시스템에 감시자와 감사자의 특별한 구성이나 배치를 지시하진 않습니다. 다시 말해, 좀 더 흔히 이루어지는 특정한 구성이 있다는 것입니다. 일반적인 구성에서, 인증 기관은 감시자를 운영하고 클라이언트(브라우저)는 감사자를 구동합니다 (그림 3 참조). 이 구성은 감시자와 감사자에게 필요한 메시지 교환을 단순화하며, 인증서 감사자와 클라이언트가 고객과 사용자의 특정한 요구를 충족할 수 있는 감시 및 감사 시스템을 스스로 개발하게 합니다. 이 구성을 수행하는 과정 중 일부가 아래 서술되어 있습니다.

인증서 발급

인증 기관은 SCT를 로그 서버에서 취득하여, X.509v3 확장(이 과정에 대한 자세한 정보는 그림 1 참조)을 사용하여 SSL 인증서에 SCT를 통합합니다. 인증 기관은 이어서 (SCT가 첨부된) 인증서를 서버 운영자에게 발급합니다. 이 방식은 서버 업데이트를 필요로 하지 않고 (현재 X.509v3 확장을 지원하는 모든 서버), 기존의 SSL 인증서를 관리한 방식 그대로 서버 운영자가 인증서를 관리할 수 있게 합니다.

TLS 핸드쉐이크

TLS 핸드쉐이크 과정에서, TLS 클라이언트는 SSL 인증서와 인증서의 SCT를 수신합니다. 보통 TLS 클라이언트는 인증서와 서명 체인을 검증합니다. 거기에, TLS 클라이언트는 (다른 인증서가 아닌) 실제로 인증서가 발급된 SCT와 올바른 로그로 발급되었는지 SCT에 있는 로그 서명을 검증합니다. 불일치가 발견되면, TLS 클라이언트는 인증서를 거부해야 합니다. 예를 들어, TLS 클라이언트는 미래의 SCT 타임스탬프를 가진 모든 인증서를 기본적으로 거부해야 합니다.

인증서 감시

대부분의 감시자는 인증 기관에 의해 운영됩니다. 이 구성은 인증 기관이 더 효과적인 감시를 만들고, 자체적으로 표준과 요구 사항을 감시할 수 있도록 합니다.

인증서 감사

대부분의 감사자는 브라우저에 들어 있습니다. 이 구성에서, 브라우저는 주기적으로 SCT 배치를 통합된 감사 구성 요소로 전송하고, SCT(와 관련된 인증서)가 올바르게 로그에 추가되었는지를 질의합니다. 감사자는 이어서 비동기적으로 로그를 확인하고 검증을 행할 수 있습니다.

다른 시스템 구성

감시자와 감사자가 기존의 TLS/SSL 구성 요소와 긴밀하게 통합된, 위에 서술한 일반적인 구성 외에도, 인증서 투명성은 수많은 다른 구성도 지원합니다. 예를 들어, 감시자는 인증 기관과 서버 운영자를 대상으로 유·무료 서비스를 제공하는 단독 항목으로 구동될 수 있습니다 (그림 4 참조). 감시자는 Google, Microsoft, Yahoo 등 거대 인터넷 기업과 같은 서버 운영자에 의해 구동될 수 있습니다. 비슷하게, 감사자도 단독 서비스로 운영되거나, 감시자의 부가 기능으로 작동할 수 있습니다.

다음글: 3. 로그 증명의 작동 방식

[翻訳] 1. 証明書の透明性(Certificate Transparency) 概要

証明書の透明性 概要

グーグルの証明書の透明性プロジェクトはすべてのHTTPSコネクションに使われるSSL証明書システムの欠陥を修正します。この欠陥はインターネットコネクションの暗号化コネクションの効用性と信頼性を脆弱にし、ドメイン認証、両側の暗号化、そして証明書を通じて生じられた信頼チェーンを含むTLS/SSL構図の深刻な損傷をもたらすこともあります。これを放置すると、この欠陥がウェブサイトなりすまし、サーバー偽装、中間者攻撃など広範囲なセキュリティー攻撃を容易にします。

証明書の透明性はSSL証明書をほぼリアルタイムに近くモニターし、監査できるオープンフレームワークを提供することで、このような欠陥を除くに役立ちます。特に、証明書透明性はSSL証明書が証明書認証が間違った場合、他のところでむやみに証明書の認証をもらったかを確認できるようにします。証明書の認証が悪意を持っているユーザーに乗っ取られて間違った認証を受けたかも確認できるようにします。

公開されいるオープンフレームワークなので、誰でも証明書の透明性を確かめる核心コンポーネントのビルドやアクセスができます。これは特に、ドメインの所有者、証明書の認証者、そしてブラウザの製造者など、SSL認証システムの無欠と好調を維持して、インターネットを構成するインターネットのセキュリティー関係者に特に役立つものです。

証明書の透明性を深く調べるには、導入ドキュメントをご覧ください。すでに証明書の透明性について、基本概念に馴染んでいる方は、詳細実装のための詳しいデザイン文書をご覧ください。証明書の透明性のフレームワークを起動する核心コンポーネントをビルドする方法についてオープンソースプロジェクトもあります。

証明書の透明性とは?

現代の暗号化技術のおかげで、ブラウザは常に偽装、偽物のSSL証明書が提供される怪しいウェブサイトの見分けができます。しかし、現在の暗号化技術は間違って発行された証明書と、危うくなったか、悪意を持っている集団に乗っ取られた証明機関(CA)の証明書が提供される怪しいウェブサイトを見分けるほど優れてはいません。この場合、ブラウザは証明書に問題がないと表示して、証明機関が信用できるし、訪問しているウェブサイトのコネクションが安全だという間違った印象を与えます。

ここで問題は、現在は簡単で効果的にSSL証明書をリアルタイムで監査、または監視する技術がなくて、このような(怪しい)誤作動が起きるのであって、疑いのある証明書は普通は検出されなく、証明書の取り消しは数週間後、あるいは数か月後になります。それに、このような種類のSSL誤作動の頻度がさらに増えつつあります。最近の数年間間違って発行になった証明書が適法なサイトとして仮装するに使われ、一部の場合、怪しいソフトをインストールしたり、ユーザーを浸透するにも使われました。

一例として、有名なオランダ証明機関(DigiNotar)が攻撃されて、ハッカーはCAシステムを利用して、偽物のSSL証明書を発行することができました。証明書はイランでGmailとFacebookなどの数多くのサイトを仮装することに活用されて、偽物のサイトの所有者がユーザーに浸透できるようにしました。

여기서 문제는, 현재로선 쉽고 효과적으로 SSL 인증서를 실시간으로 감사하거나 감시할 수 없어서, 이러한 오작동이 일어나게 되는 것이고 (수상한 경우 등), 의심스러운 인증서는 보통 탐지되지 않고 인증 철회는 수 주나 몇 개월 후에나 이뤄진다는 것입니다. 게다가, 이러한 종류의 SSL 오작동의 빈도가 더욱 늘어나고 있습니다. 지난 몇 년간 잘못 발급된 수많은 인증서가 합법적인 사이트를 가장하는데 쓰이고, 일부의 경우에는 수상한 소프트웨어를 설치하거나 무고한 사용자에게 침투하는데도 쓰였습니다.

한 가지 사례로, 저명한 네덜란드 인증 기관(DigiNotar)이 공격받았고, 해커는 CA 시스템을 사용하여 가짜 SSL 인증서를 발급할 수 있었습니다. 인증서는 이란에서 Gmail과 Facebook과 같은 수많은 사이트를 가장하는데 활용되었고, 이는 가짜 사이트 소유자가 무고한 사용자에게 침투할 수 있게 했습니다. 다른 사례는 말레이시아 소속의 인증서 기관(DigiCert Sdn. Bhd.)이 실수로 22개의 취약한 SSL 인증서를 발급하여, 웹 사이트를 가장하고 수상한 소프트웨어를 서명하는데 쓰였습니다. 그 결과, 주요 브라우저는 DigiCert Sdn. Bhd.가 발급한 모든 인증서에 대한 신뢰를 철회하였습니다.1

최근에, 거대한 U.S. 소재 인증 기관 (TrustWave)이 고객의 인증서 하나에 대한 하위 루트 인증서를 발급하여 고객이 내부 네트워크 트래픽을 관찰할 수 있게 했습니다. 하위 루트 인증서는 인터넷의 거의 모든 도메인에 대한 SSL 인증서를 발급할 수 있게 합니다. 비록 Trustwave는 인증서를 철회했고 고객에게 하위 루트 인증서를 더이상 발급하지 않지만, 인증 기관의 잘못에 의해 얼마나 커다란 결과를 낳게 되는지를 보여주는 사례입니다.

많은 경우에 잘못 발급된 인증서는 해커에 의해 심각한 결과를 초래할 수 있는 악의적인 공격을 하는데 사용되었지만, 일이 터진 후 후폭풍도 거대하고 위험합니다.

결국, 네덜란드의 인증 기관 인증서는 인증 철회되고, 인증 기관은 폐쇄되었습니다. 인증 철회 및 폐쇄는 네덜란드 사람들이 인증 기관의 SSL 인증서를 발급받은 정부와 개인 사이트를 접속하지 못하게 되는 여파를 만들었습니다.

사태 해결을 위한 인증서 투명성

인증서 투명성은 SSL 인증서 발급 유무를 도메인 소유자, 인증 기관과 도메인 유저에 의해 정밀하게 조사할 수 있도록 개방할 수 있도록 하여 이들 인증서 기반 위협을 대처하는 걸 목표로 합니다. 특히, 인증서 투명성은 세 가지 주요 목표가 있습니다.

  • SSL 인증서를 도메인 소유자를 드러내지 않고서는 인증 기관이 도메인 SSL 인증서를 발급하지 못하게 하거나, 어렵게 만듭니다.
  • 아무 도메인 소유자나 인증 기관이 인증서가 실수 또는 악의적으로 발급되었는지 여부에 대한 공개 감사 및 감시 시스템을 제공합니다.
  • 사용자가 가능한한 실수 또는 악의적으로 발급된 인증서에 속지 않도록 만듭니다.

인증서 투명성은 TLS/SSL 인증 시스템 감시와 특정 TLS/SSL 인증서 감사를 위한 공개 프레임워크를 만듦으로써 이러한 목표를 만족시킵니다. 이 공개 프레임워크는 아래 세 가지 주요 구성 요소로 구성되어 있습니다.

인증서 로그

인증서 로그는 암호로 보호되며, 공개적으로 감사되며, 인증서에 대한 레코드 추가만 가능한, 단순한 네트워크 서비스입니다. 누구든지 로그에 인증서를 등록할 수 있지만, 인증 기관이 최우선 등록자가 될 것입니다. 비슷하게, 누구든지 로그된 특정 인증서가 잘 로그되고 있는지, 그리고 인증서를 검증하기 위해서 암호 증명에 대한 로그를 조회할 수 있습니다. 로그 서버 개수는 많을 필요가 없고 (이를테면, 전세계에 1000개보다 적습니다), 각각은 인증 기관, 인터넷 제공 업체 또는 어떤 다른 조직에서든지 독립적으로 운영될 수 있습니다.

감시자 (Monitors)

감시자는 주기적으로 모든 로그 서버와 접촉하면서 수상한 인증서에 대한 주시를 공개적으로 실행하는 서버입니다. 예를 들어, 감시자는 인증 기관을 잃었거나 인증되지 않은 인증서가 도메인에게 발급되었는지, 비정상적인 인증서 확장이나 인증 기관이 갖고 있는 인증 권한 같은 이상한 권한을 갖고 있는지 알려줄 수 있습니다.

감시자는 대출이나 신용 카드에 여러분 이름으로 누군가 사용할 때 알려주는 것과 같은 신용 경고 알림과 매우 유사한 방식으로 동작합니다. 일부 감시자는 Google 또는 은행, 정부와 같은 회사와 조직에 의해 운영됩니다. 그 외에도 도메인 소유자나 인증 기관이 구매할 수 있는 구독 서비스를 운영할 것입니다. 기술에 정통한 개인도 스스로 감시자를 운영할 수 있습니다.

감사자 (Auditors)

감사자들은 크게 보아 두 가지 기능을 수행하는 가벼운 소프트웨어 구성 요소입니다. 첫째는 로그가 올바르게 쓰이고 있고 암호화가 유지되고 있는지 검증할 수 있습니다. 로그가 제대로 작성되지 않으면, 로그 스스로 이에 대해 서술해야 하고 그렇지 않으면 종료될 수 있습니다. 둘째로 특정 인증서가 로그에 나타나는지를 검증할 수 있습니다. 이는 감사 기능에서 특히 중요한데, 인증서 투명성 프레임워크는 모든 SSL 인증서가 로그에 등록되어 있을 것을 필요로 하기 때문입니다. 인증서가 로그에 등록되어 있지 않다면, 인증서가 수상하다는 의미이며, TLS 클라이언트는 수상한 인증서에 대한 연결을 거절할 것입니다.

감사자는 브라우저의 TLS 클라이언트, 단독 서비스, 아니면 감시자의 보조 기능으로서 필수 구성 요소가 될 수 있습니다. 누구든지 감사자를 만들 수 있는데, 이는 인증 기관이 모든 인증 기관에 대한 운영 투명도를 높일 수 있는 효과적인 방법이므로 인증 기관이 수많은 감사자를 운영할 것입니다.

아울러서, 이들 구성 요소가 실시간으로 새로운 또는 기존에 존재하는 SSL 인증서를 누구든지 관찰하고 검증할 수 있게 하는 공개 프레임워크를 구성합니다.2

오작동의 감소, 안전한 브라우징

이것이 구현되면, 인증서 투명성은 잘못 발급된 인증서, 악의적으로 취득한 인증서, 공격받은 인증 기관과 같은 인증서 기반 공격의 몇 종류에 대한 대비를 하는데 도움을 줍니다. 이 공격은 도메인 소유자의 금전적 손실 증가, 인증 기관의 신뢰 하락 그리고 인터넷 사용자를 웹 사이트 스푸핑, 서버 위장, 중간자 공격과 같은 광범위 공격으로 노출할 수 있습니다.

인증서 투명성 프레임워크는 공개 조사 제공 및 SSL 인증 시스템 개방을 통해 이들 인증서 기반 위협을 격리시키는 것을 목표로 합니다. 비록 공개 프레임워크가 공개적으로 감시자와 감사자에 의해 구통되지만, 인증성 투명성은 현행 SSL 인증 시스템에 빠져있는 몇몇 이점을 제공합니다.

잘못 발급된 인증서, 수상한 인증서, 공격 받은 인증 기관의 조기 탐지

대부분의 경우, 인증서 투명성 시스템은 수상한 인증서나 인증 기관을 수 일, 수 주, 수 개월을 수 시간으로 단축하여 탐지할 수 있습니다.

수상한 인증서나 인증 기관이 감지되었을 때 빠른 이탈

인증서 투명성이 위험한 인증서와 인증 기관을 다루는 기존의 해결 방식에 의존하긴 하지만(예를 들어 인증서 철회), 단축된 탐지 시간은 위험한 인증서나 인증 기관이 발견되었을 때 전체 해결 과정을 가속할 수 있습니다.

전체 TLS/SSL 시스템에 대한 더 나은 확인

인증서 투명성은 새로 발급되거나 존재하는 TLS/SSL 인증서에 대한 공개 감시 및 검증을 지원하는 공개 프레임워크로 설립되었습니다.  이에 (도메인 소유자, 인증 기관, 사용자 같은) 관심 있는 이들에게 TLS/SSL 시스템의 투명도와 상태를 관찰하고 검증할 수 있는 기회를 제공합니다.

집중 솔루션으로서, 인증서 투명성은 HTTPS 연결을 더욱 신뢰할 수 있고 정보 탈취 및 위장으로부터 안전하게 만듦으로써 인증 기관으로부터 개인 서버까지 확장된 신뢰 체인을 강화합니다. 그러나 그 이상으로, 일반적인 보안 관점에서, 인증서 투명성은 광범위한 인터넷 보안 공격을 방어하고, 모든 사용자가 안전하게 브라우징할 수 있도록 도와줍니다.

다음글: 2. 인증서 투명성 작동 방식

OpenSSLをインストールして、アップデートする方法

OpenSSL を Ubuntu 16.04でインストールして、アップデートする方法

OpenSSLはSSLとTLSプロトコルのオープンソース実装です。OpenSSLをUbuntuデバイスでインストールし、アップデートすることはとても簡単であって、この記事はその点について触れています。

OpenSSLをインストールして、アップデートする

OpenSSLのインストールの前に、現在バージョンのOpenSSLを次のコマンドで調べてみましょう。

$ openssl version
OpenSSL 1.1.0h  27 Mar 2018

その後、OpenSSLの最新バージョンを次のコマンドでダウンロードします。左側のリンクをクリックして、適切なバージョンを選びます。openssl-1.xのフォーマットの中での最新版がお勧めですが、preが付いたのは正式反ではないので、問題発生の恐れがあります。

バージョンが低いのに、継続的に更新されているバージョンもありますが、これはLTSバージョンであって、今後アップデートをなるべく避けたいし、最新機能を必要としていない方にお勧めします。多分、Ubuntuのデフォルトバージョンなので、このようにするひゆ

원하는 항목을 브라우저에서 링크만 복사하여 아래 wget 명령 우측에 채워줍니다. 여기서는 openssl 1.1.1 pre7 버전을 설치하는 모습입니다.

$ cd /usr/src
$ wget https://www.openssl.org/source/openssl-1.1.1-pre7.tar.gz
--2018-06-19 08:49:17--  https://www.openssl.org/source/openssl-1.1.1-pre7.tar.gz
Resolving www.openssl.org (www.openssl.org)... 202.43.57.191, 2600:140b:5000:1af::c1e, 2600:140b:5000:1ab::c1e, ...
Connecting to www.openssl.org (www.openssl.org)|202.43.57.191|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8308876 (7.9M) [application/x-gzip]
Saving to: ‘openssl-1.1.1-pre7.tar.gz’

openssl-1.1.1-pre7.tar.gz   100%[=================================================>]   7.92M  4.00MB/s    in 2.0s

2018-06-19 08:49:26 (4.00 MB/s) - ‘openssl-1.1.1-pre7.tar.gz’ saved [8308876/8308876]

다운로드가 완료되면, 다운 받은 압축 파일을 다음과 같이 풀어줍니다.

$ tar -zxf openssl-1.1.1-pre7.tar.gz

수동으로 컴파일하기 위한 준비 작업이 필요합니다. 다음 명령으로 빌드 도구를 설치해주세요. 아래 명령에 파일을 찾을 수 없다는 오류가 발생하면, 우선 우분투 패키지 업데이트부터 실시합니다.1

$ sudo apt install build-essential

이어서 OpenSSL 컴파일 후 설치 및 업그레이드를 하기 위해서 다음 명령을 사용합니다. cd 명령어 뒤에 디렉토리명은 정확해도 되지만, 여기서는 편의를 위해 와일드카드로 간편하게 들어갔습니다. 둘 이상 존재한다면, 정확한 디렉토리명을 지정해주세요.

$ cd openssl*
$ ./config

참고로 위 ./config 대신 ./Configure --help를 참고하여 원하는 옵션을 더 넣을 수 있습니다. 특정 Cipher는 기본적으로 빠져있어서 이런 작업을 미리 해둬야 설치 후 사용 가능한 경우도 있습니다. 보통의 경우 위 명령으로 충분합니다.

이 작업이 끝나면, make 명령으로 OpenSSL의 설치를 준비합시다.

$ make

컴파일이 다 끝나면, make test 명령을 쳐줍니다.

$ make test

다양한 평가 항목이 완료되면, 루트 권한을 갖고 install을 시작합니다.

$ sudo make install

에러에 대한 언급이 없다면, 성공적으로 설치된 것입니다.

아래는 오류 발생시 따라합니다.

여기서부터 링크를 잘 걸어야 잘 실행할 수 있습니다. openssl 명령 실행시 error while loading shared libraries: libcrypto.so.1.1 등의 오류가 발생할 수 있습니다. libssl.so 또한 마찬가지입니다. 이 때 libcrypto.so와 libssl.so를 /usr/lib/usr/local/lib에 위치한 파일을 향하게 심볼릭 링크를 만들어야 합니다. 각 경로에 들어가서 파일이 (그것도 링크가 아닌 실행 가능한 파일로서) 실존하는지 확인합니다. 기존에 존재하던 예전 버전의 쓰레기가 있다면 제거합니다.

$ sudo rm /usr/lib/libcrypto.so*
$ sudo rm /usr/lib/libssl.so*
$ sudo ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so
$ sudo ln -s /usr/local/lib/libssl.so.1.1 /usr/lib/libssl.so
$ sudo ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1
$ sudo ln -s /usr/local/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1

그리고 방금 설치한 openssl이 bin 폴더에 바로 저장될 수도 있지만, 다른 곳에 만들어졌을 수 있습니다. 위 make install에서 bin 파일이 어디 만들어졌는지 확인하고, 원래의 openssl을 치워버리고 링크해야 합니다.

$ sudo mv /usr/bin/openssl /root/
$ sudo ln -s /usr/local/bin/openssl /usr/bin/openssl

간단한 설치와 업데이트 방법이죠? OpenSSL은 기본적인 암호화 기능과 다양한 유틸리티 기능을 제공합니다. https 서비스 연결, ssh 터미널에도 쓰입니다. 또한, 명령줄을 통해 온라인 인증서에서 정보를 검증하고 추출하는데도 쓰일 수 있습니다.

사견으로, 빌드 난이도는 nginx보다도 낮은, 무척 쉬움에 속하며 아무래도 종속성이 낮은 원시 코드에 가까워서 그런 것 같습니다. 그러나 시스템 설치 단계에서 기존 버전과 충돌을 처리하는 방법에서 고민해야하는 부분이 많으므로, 시스템 백업을 사전에 한 후 도전하길 강력하게 권합니다.

소멸세계, 무라타 사야카, 2015

消滅世界: 『すばらしい新世界』と別の意味で新世界、そして狭い表現。

サマリー

「セックス」も「家族」もこの世から消える。人口受精で子供を産み、夫婦間セックスも近親相姦になった世界。

小説は第二次世界大戦で大勢の男性が戦争に徴用され、生まれる子供の数が極端に減ってしまった『平行世界』を背景にする。ここではもはやセックスで子供を産まないし、結婚もプログラムに希望の思想とタイプを入れるだけでマッチングしてくれるし、子供は人工授精で生まれるのが当たり前になっている。

雨の降っていた夏に生まれた主人公、雨音は小学生時代、自分が人工授精ではなく、『まったく違う方法』で産まれたことを知る。その後、なぜ母は『交尾』で自分を生んだのか、自分の本当の本能とは何かを知るために愛とセックスに没頭する。果たして彼女が見つけてきたのは私たちにどんな意味を持つだろうか。

感想

Ridibooks電子書籍の無料60日貸出イベントで読むことになった。あまり長くないので、ページはすらすらめくられる。日本小説の展開特徴はあるので、韓国語に翻訳した時の一人称の問題もあまりなく、これくらいなら大丈夫だと言える。

家族はあるのに、関係のパートナーではない、ドライな仲が常識になり、ぬるい関係は外での一時的なものになった世界。そういうところから過去と現在、そしてもうすぐ訪れる未来まで知ってしまった雨音にとって(そしてこの不親切な小説に困惑した読者にも)カオスそのものである。そういう人たちに作中人物の意見が出る。

“誰も進化の途中の動物である。世界の常識と一致するか否か、それは偶然出会って、次には何が正しいか分からなくなる。”

これはまるで原始時代から便所を外に分離し、臭いものを家から遠ざかりにした今までの流れと同じもので、この終着点みたいなものではないか。セックスが生産と別のものになると、ただの娯楽で存続すると思ったが、未来からはパートナー無しに完全な快楽も得られるようになる。こう変わってきた世界は果たして進歩したと言えるのか。

消滅世界、初頭から出した『素晴らしい世界』という作品と通じるタイトルと感じられるが、フォーカスを家族に移すことで人間性の解体が極大化する気がする。実験都市から感じられる子供の個性無し姿は統治に適していて、問題のない無難な社会を作られる最高の方法である。そして、男女関係なく、同性どうしにも子供を産むのに問題がないし、社会共同体の育児が強いられるなら、伝統的な家族などいらなくなる。この本では男か女か分からない子供が出てきたが、この社会が発展することで性別もなくなる『進化』が訪れてくるのか、そういうつまらない世界が来るのが嘆いた。

私たちの動きと信じている正しさが未来世界をどう変えるかについて、いつも希望に想像していたし、不幸は資源枯渇などが原因になると思っていた。しかし、歴史が見せるように、無難な平和と繁栄の中にとりつく無意識が社会を想像と違う人間性抹殺につなげるのではないか。

それを論するにこの本は十分ではない。どうやら、ヒット作の«コンビニ人間»をまだ読んでないが、その前作であるため、未熟な部分があったのではないかと思う。作中人物も誰もが妊娠と出産ばかり考えていて、その理由ははっきりとしていない。そういうところから見ると、感情的な女性の見方が見える。それでもこのような可能性を考えてみることで、変わり始まる前にその価値観を真剣に思うこともできるのではないか。

[번역] Docker 컨테이너를 Windows Bash에서 구동하기

Linux를 위한 Windows Subsystem(WSL)1이 Microsoft의 Build 컨퍼런스 2016에서 발표되었을 때, Windows 개발자들에게 새로운 도구의 세계가 열렸습니다. 개인적으로, PowerShell, Bash와 예전의 낡은 cmd까지, 스크립트를 할 때 자유롭게 고를 수 있다는 점을 참 좋아합니다. 그리고 Windows Bash에서 Docker 를 구동하지 못하고 있다는 점은 저를 지금까지도 괴롭게 합니다.

이 글의 원본 제목은 “Windows Bash에서 Docker를 구동하기”였습니다만, 이는 다소 과장되어 있습니다. Docker 는 Windows에서 완전히 완성되지 않은 수많은 시스템 호출에 대한 접근을 필요로 하며, 이로 인해 WSL에서 엔진을 구동하는 것은 아마도 쉽지 않을 것입니다. 대신, 우리는 Docker Engine을 Windows에서 구동하고 이를 Bash에서 연결할 것입니다. 이 또한 PowerShell에서 컨테이너를 시작하고 Bash로 상호작용하거나, 다른 방식을 제공한다는 장점을 갖고 있습니다. 다시 말해서, 당신의 컴퓨터가 단일 머신처럼 느껴질 것입니다.

그 방법을 알아봅시다.

1. Docker를 Windows에서 설치하기

Docker 엔진을 Windows에서 설치하려면, docker.com에 가서 적절한 배포판을 다운로드합니다. 물론, 하드웨어 가상화가 활성화돼있고, Hyper-V가 설치되어 있어야 하며, 그렇지 않으면 엔진이 시작되지 않습니다.

가장 빠른 방법: Windows 10 크리에티터 업데이트 설치

Windows 실행 파일을 Bash에서 실행할 수 있게 되었기 때문에, Windows 10 크리에이터 업데이트에서는 이 과정이 더욱 단순해졌습니다. 그저 아래 두 줄을 .bashsrc에 추가하고 (환경을 다시 로드하면) 끝납니다!

export PATH="$HOME/bin:$HOME/.local/bin:$PATH"
export PATH="$PATH:/mnt/c/Program\ Files/Docker/Docker/resources/bin"
alias docker=docker.exe
alias docker-compose=docker-compose.exe

docker –version을 Bash에서 실행하면, 나머지 글을 읽을 필요도 없습니다. :)

*) Windows 10 크리에이터 업데이트는 2017년 4월 11일에 인사이더에 공개되었으며 현재 유효합니다.

Windows 10 애니버서리 에디션에서 작동하는 법

Docker를 WSL에 설치하기 위해서, 몇 가지 더 많은 단계가 필요합니다. 일부 선택적 단계를 제외하고는 WSL에서도 잘 작동하는, 일반적인 Ubuntu 설치 방법은 여기 적혀 있습니다.

제가 한 방식은 이것입니다:

# Install packages to allow apt to use a repository over HTTPS
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
# Add Docker's official GPG key
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Set up the repository
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# Update source lists
sudo apt-get update
# Install Docker
sudo apt-get install docker-ce

물론 필요한 바이너리를 다운받고 압축을 푸는 작업, 그리고 그것을 PATH에 넣는 방식의 선택지도 있습니다. 가장 최신 버전에 맞는 방법은 여기 적혀 있습니다.

그 결과는?

Docker 엔진을 Windows와 WSL 양쪽에 설치했지만, 둘 다 구동하진 않았습니다. Windows 인스톨러는 고맙게도 Docker 엔진을 시작할 때 쓰는 Docker 바로 가기를 바탕 화면에 만들어놨습니다. 그리고 docker images를 PowerShell이나 Bash에서 호출할 수 있습니다.

PowerShell:

PS C:\> docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

아직까지 이미지를 아무 것도 만들지 않았지만, 괜찮습니다.

Bash:

$ docker images
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

전혀 만족스럽지 못하군요. 하지만 한 두 가지 과정을 더 거치면, 모두 잘 작동할 것입니다.

2. Windows Docker로 WSL의 Docker 연결하기

docker를 다른 장치의 엔진을 대상으로 구동하는 것은 꽤 쉬운데, Docker가 CLI가 연결될 수 있는 TCP 엔드포인트를 노출할 수 있기 때문입니다.

참고: 글을 처음 공개한지 얼마 되지 않아서 Docker 업데이트를 통해 이 TCP 엔드포인트는 기본적으로 꺼져 있습니다. (Mark님 알려주셔서 감사해요!) 활성화하려면, 작업표시줄에 있는 Docker 아이콘을 우클릭하여, 메뉴에서 설정을 들어갑니다. 그리고 “Expose daemon on tcp://localhost:2375 without TLS” 옵션을 켭니다 (보안 위험성에 유의합니다).

export PATH="$HOME/bin:$HOME/.local/bin:$PATH"
export PATH="$PATH:/mnt/c/Program\ Files/Docker/Docker/resources/bin"
alias docker=docker.exe
alias docker-compose=docker-compose.exe

이렇게 하면, 다음처럼 할 일은 Bash 상의 CLI가 Bash 상에는 없는 엔진 대신에 Windows에서 엔진을 실행하게 됩니다.

$ docker -H tcp://0.0.0.0:2375 images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

훨씬 낫군요!

이 상태를 지속하게 만드는 두 가지 방법이 있습니다. 위 명령을 별명으로 추가하거나, 아니면 더 나은 방법으로(Dave님의 추천), Docker가 호스트 엔진을 찾도록 환경 변수를 만들면 됩니다.

$ echo "export DOCKER_HOST='tcp://0.0.0.0:2375'" >> ~/.bashrc
$ source ~/.bashrc

이제, 도커 명령을 Bash에서 실행하면, 우리가 바라던 대로 작동하게 됩니다.

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

미션 성공!


이 글에서 사용한 버전

물론, 이 방법이 사용하는 버전에 따라 되지 않을 수 있습니다. 이 블로그 포스트에서는 다음과 같은 버전을 사용하였습니다.

Windows

Windows 10 Pro Anniversary Edition (Version 1607, OS Build 14393.1066)
Windows 10 Pro Creators Update (Version 1703, OS Build 15063.138)

WSL Ubuntu

14.04.5 LTS

Docker on Windows

17.03.1-ce, build c6d412e

Docker on Ubuntu

17.03.1-ce, build c6d412e

출처: https://blog.jayway.com/2017/04/19/running-docker-on-bash-on-windows/

ゼロから始めるGit(分散型バージョン管理)ライフ 1

Gitを使うべし!

形象バージョン管理アプリの中で、一番優秀だと思われるのは断然Gitと言える。Gitは次のような特徴が長所と思われている。

  1. ファイルごとに変更内容を追跡し、ステージ後、コミット、プッシュ過程を通してアップロードができる。
  2. 中央サーバー中心ではない。分散セーブをする。
    • Gitは確かリモートサーバーという概念を持ってるが、サーバーにつながらなくてもローカルコミットまではできる。SVNはリモートサーバーと繋がらなければ、一切のコミットができない。
    • ローカルに貯めていたコミットを一気にプッシュすることでサーバーと無事に同期化もできる。
  3. ほとんどの場合、コンフリクトの解消は簡単にできる。
  4. ソース保管と複製に利用できる。
    • Githubはgitを活用した代表的な公開サービスであって、ここにPublicとしてアップすることで、誰でもクローンができる。
    • GitをCloneすれば、レポジトリーの歴史と内容のすべてがコピーされて、サーバーの有無と関係なく、再アップロードして歴史を続けられる。
  5. コミットの容量が小さいし、いつでもアンドゥしたり、他のコミットをチェックアウトできる。
    • Branchを分岐して、人あるいは機能ごとに分けることができる。完成されていない作業中の機能も柔軟にセーブできる。
    • 新しい機能が問題の原因となった場合、過去のコミットに戻ることも、他のブランチに変えることもできる。
    • Checkoutをすると、ローカルのファイルはすべて変わってしまうが、たとしてコミットした既存のファイルがどこか消えるのではない。プロジェクトフォルダの内容をまるでテンポラリーファイルのように変えられる。

一方、形象管理を経験していない人なら、「グーグルドライブやラインで送ればいいじゃん」と思うかもしれない。これは次のような理由で避けた方が進められる。

  1. 同じか似ているファイルが複数存在するようになる。
    (マスター.zip, マスター.zip (1), マスター-最終.zipが積み重なるような…)
  2. プロジェクトファイル全体を圧縮して、コピー(アップロード/ダウンロード), 解凍する過程で時間の無駄遣いと手間がかかる。
  3. 常に何を変更したか分からない。
  4. 前はできた機能が壊れた場合、その原因を探るのはとても難しい。
  5. 誰かが動かないと言っても、その人のファイルが最新かどうかわからない。

Gitを使うためのそろいもの

Windows環境でGitを使うには予め大きく二つの気にすることがある。

  • クライアント側
    • Gitをコマンドで使うか?
      • Gitバイナリーは確かコマンドプロンプトやbashなどで使われるCLIアプリであり、使いにくいが、GUIにない機能を使うためには必須である。
      • 一部のGUI Gitは別途のバイナリーが要るが、大体にGUIのみ使っている場合ならそのアプリの以外にGitをまたインストールする必要はない。しかし、上記の理由でコマンドの必要性はあるので、両方あって損することもない。
    • Gitを便利に使えるGUIを選ぼう。
      • SourceTreeは地域化が進められていて、日本語バージョンもある。しかし、機能では惜しいところもある。
      • GitKrakenはこのシリーズで紹介するアプリであり、豊富な機能と優れている視覚化が特徴だ。しかし、英語のみサポートされている。
      • TortoiseGitはエクスプローラーのメニューの中にあり、連携に優れているが、機能と直感性は劣っている。
      • eclipseのeGit, Visual Studioのgitなど、IDEに含まれているプラグインも活用できる。しかし、本の最小の機能しかないので、gitに対する誤解を招くこともあり、コンフリクトなどの問題解決が非常に難しいか、不可能な場合もある。
  • サーバー側
    • 誰でもgitバイナリーを使い、git serverの設定ができる。
    • githubとbitbucketのようなウェブgitが使える。
      • github: Publicの場合無料。Privateは一人に7ドルの費用。
      • bitbucket: Public無料。Privateも5人内なら無料。
    • Synology NASにgitを設定して、SSHプロトコルで使用できる。

Git for Windows ダウンロード

Linuxの環境では、基本的な構成されることが多いし、(Ubuntu等)、必要なら単純な命令でインストールできる。

Linux Git ダウングレード

Gitをパソコンで設定

GUIのみの方には必要ないかもしれないが、gitコマンドを使うには事前設定が必要だ。

まず、上記のリンクからファイルのダウンロードを行い、インストールを済ませる。PATH設定が適用されるには、現在のコマンドプロンプトをすべて終了し、必要な時はシステム再起動もする。

次のようなメッセージが表示されたら、PATHが間違っていることである。

> git
'git' is not recognized as an internal or external command,
operable program or batch file.

下の結果が成功である。

> git
usage: git [--version] [--help] [-C ] [-c name=value]
           [--exec-path[=]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=] [--work-tree=] [--namespace=]
            []

These are common Git commands used in various situations:

start a working area (see also: git help tutorial)
   clone      Clone a repository into a new directory
   init       Create an empty Git repository or reinitialize an existing one

work on the current change (see also: git help everyday)
   add        Add file contents to the index
   mv         Move or rename a file, a directory, or a symlink
   reset      Reset current HEAD to the specified state
   rm         Remove files from the working tree and from the index

examine the history and state (see also: git help revisions)
   bisect     Use binary search to find the commit that introduced a bug
   grep       Print lines matching a pattern
   log        Show commit logs
   show       Show various types of objects
   status     Show the working tree status

grow, mark and tweak your common history
   branch     List, create, or delete branches
   checkout   Switch branches or restore working tree files
   commit     Record changes to the repository
   diff       Show changes between commits, commit and working tree, etc
   merge      Join two or more development histories together
   rebase     Reapply commits on top of another base tip
   tag        Create, list, delete or verify a tag object signed with GPG

collaborate (see also: git help workflows)
   fetch      Download objects and refs from another repository
   pull       Fetch from and integrate with another repository or a local branch
   push       Update remote refs along with associated objects

'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help ' or 'git help '
to read about a specific subcommand or concept.

これから、基本ユーザー設定をしてみよう。次のコマンドがあれば、git commitのたびに、ユーザー設定が自動でできる。

> git config --global user.name "My Name"
> git config --global user.email [email protected]

一度使ってみたらはまるGitKraken

つづく…

SCIT Schedule Hi

SCIT Schedule Hi (2018)

SCIT Schedule Hi
SCIT Schedule Hi

SCIT Schedule HiとはSCIT Masterの在学中の学生が手軽に自分の志望企業に関するスケジュールを確認し、変動事項をアラートにより分かるプログラムです。

開発動機

SCITの面接シーズンになり、学生の生活は不安そのものになりました。不安を抱き、施設内のサイトでF5を連打する姿はまるで健康的ではありません。接続しなくても、ただアプリを起動する、それどころか、パソコンを起動するだけで自分のスケジュールの確認ができたらさらに便利でしょう。そうなると、GET1回、POST1回の2回の要請が、POST1回に減り、更新間隔も縮めることができます。ポーリングのリクエストもよりシンプルになり、施設の側からみても、トラフィックの低減ができますね。

開発の言語とツール

  • Language: C#
  • Tool: Visual Studio 2017
  • Template: WPF Application

続きを読む

アルゴリズム探求-隣接している元素の位置を求めよう

問題

U < V < WまたはU > V > Wの時、整数VとUはWの間にある。

開いていない配列Aは与えられたN個の整数で構成されていて、数字のインデックス(P,Q)のペアは0 ≤ P < Q < Nの隣接する数がA[P]とA[Q]の間にないことと、A[P]≠A[Q]であることを表す。

例えば、配列Aでは:

A[0] = 0
A[1] = 3
A[2] = 3
A[3] = 7
A[4] = 5
A[5] = 3
A[6] = 11
A[7] = 1

次のインデックスのペアは隣接した値を持っている。

(0,7), (1,4), (1,7), (2,4), (2,7), (3,4), (3,6), (4,5), (5,7)

例えば、インデックス4と5は隣接した数字を持っている。なぜなら、A[4] = 5とA[5] = 3は異なっていて、配列Aにはその間に挟まる数字はない。つまり、数字4のみが間にあるが、配列には存在しない。

与えられた二つのインデックスPとQの距離はX ≥ 0ではabs(X) = X、X < 0ではabs(X) = -Xの時、abs(P-Q)として定義される。例えば、インデックス4と5の中の距離は1であり、その理由はabs(4-5) = (5-4) = 1だからである。

関数を作成せよ:

class Solution { public int solution{int[] A); }

与えられた、空いていない配列AはN個の整数で構成されていて、隣接した値を持っている配列の一番遠い距離をリターンする。この関数は隣接したインデックスがない場合、-1をリターンしなければならない。

例えば、与えられた配列Aは次のようになる。

A[0] = 1
A[1] = 4
A[2] = 7
A[3] = 3
A[4] = 3
A[5] = 5

この関数は次の理由で4をリターンしなければならない:

  • インデックス0と4は隣接している。その理由はA[0] ≠ A[4]で、配列にはA[0] = 1とA[4] = 3の間の数字を持っていないからだ。
  • これらのインデックスの距離はabs(0-4) = 4である。
  • より遠い距離の隣接したインデックスのペアはない。

次のように仮定する:

  • Nは[1..40,000]の範囲内である。
  • 配列Aの項目は整数であり、範囲[-2,147,483,648..2,147,483,647]の内である。

複雑さ:

  • 期待される最悪の場合、時間計算量はO(N*log(N))である。
  • 期待される最悪の場合、空間計算量はO(N)で、入力空間以降を言う。(インプット記号に必要な空間を除く)

発送

  • 左から探してその次の隣接した数を探すのは?
    • N個の項目に対し、N-1個のリピートをしなければならない。
    • よりいい方法があるはずだ。
  • ソートを先にした後に、低い順で登りながら当ててみるか?
    • ソートアルゴリズムは検証済みであり、内部のライブラリの方が速いし、信用できる。
    • 同じ数を除くとループはさらに速くなる。
    • でも、ソート後インデックスがなくなるのでは?
      • 元の位置は左から探すなど原始的な方法でいい。
      • 見つかったとたん、脱出するとループは短くなる。

解き方

import java.util.ArrayList;
import java.util.Arrays;

public class Question {

    /*プロゴラムのエントリ。*/
   public static void main(String[] args) {
      // TODO Auto-generated method stub
      //int[] A = new int[] {0,3,3,7,5,3,11,1};
      //int[] A = new int[] {1,4,7,3,3,5};
      //int[] A = new int[] {1,1,1,1,1,1,1,1};
      
      //ランダムの40000個の整数を入れる
      int[] A = new int[40000];
      for(int i = 0; i < A.length; i++) {
         A[i]=(int)Math.round(Math.random()*2147483647*2-2147483647);
      }
      
      //時間の計算
      long startTime = System.nanoTime();
      System.out.println("Result: "+solution(A));
      System.out.println("Elapsed Time: "+(System.nanoTime()-startTime)/1000000.0+"ms");
   }
   /* */

   /* 補助関数: 配列から項目の位置を探す */
   private static int indexOfArray(int[] A, int val, boolean reverse) {
      if(reverse) {
         //後ろから
         for(int i = A.length-1; i >= 0; i--) {
            if(A[i]==val) {
               return i;
            }
         }
      } else {
         //前から
         for(int i = 0; i < A.length; i++) {
            if(A[i]==val) {
               return i;
            }
         }
      }
      return -1;
   }
   
   /* minと maxを配列でindexOfArrayを使い、それぞれ求めてその最大値を求める */
   private static int findPairDistance(int[] A, int min, int max) {
      //左、右からmin, max検索
      int aleft = indexOfArray(A,min,false);
      int aright = indexOfArray(A,min,true);
      int bleft = indexOfArray(A,max,false);
      int bright = indexOfArray(A,max,true);
      return Math.max(Math.abs(aleft-bright),Math.abs(aright-bleft));
   }
   
   /* ソリューションのメイン */
   public static int solution(int[] A) {
      //ソート後重複を除く
      int[] sorted = A.clone();
      Arrays.sort(sorted);
      /*for(int i = 0; i < sorted.length; i++) {
         System.out.print(sorted[i]+",");
      }*/
      //ArrayList alSel = new ArrayList<>();
      int max = -1;
      for(int i = 1;i < sorted.length; i++) {
         //前項と現在項の違い
         int cha = sorted[i]-sorted[i-1];
         if(cha >= 1) { //違いが1以上の場合整数は変化したとする
            //alSel.add(sorted[i-1]);
            //findPairDistance(A,A[i-1],A[i]);
            max = Math.max(max, findPairDistance(A,sorted[i-1],sorted[i]));
            //二つの左右検索最大距離を求めた後、maxより大きい時に記録
            //System.out.println(String.format("Value: (%d,%d), Distance: %d",sorted[i-1],sorted[i],findPairDistance(A,sorted[i-1],sorted[i])));
         }
      }
      
      
      return max;
   }

}

 

IISのcipherセキュリティーを改善してSSLLabsの高得点を目指そう

IISのSSLは不完全?

Windows 10 1607、しかもServer 2016 1607というそれなりの最新1バージョンを使用しながら、IISを先週の記事で設定したことがあります。なのに、Let’s encryptに設定したのにもかかわらず、SSLLabsではこんな酷い点数になってしまったんでしょうか。

RC4を使ってはいけない理由

RC4暗号化は1987年設計されたストリーム暗号です。ストリーム暗号である分、速く適用できるし、今まで幅広く使われてきましたが、今は使用はお勧めきないそうです。いろいろ脆弱さが発見されたこと、暗号は十分に複雑ではないこと、したがって無線LANの暗号化形式の一つであるWEPを信用できなくなった原因でもあります。よって、新しいSSLプロトコルでは導入されたこともないし、そんな古いものをIISではまだサポートしていることでセキュリティーの点数に損をしてしまったわけです。

Cipher選択によって左右されるセキュリティー

SSLについての今までの記事で申しあげたとおりに、セキュリティー cipherは暗号化方法を意味します。サーバーだけではなく、クライアント側もサポートしているアルゴリズムがなければ、正しく情報通信ができないはずです。Cipherとは暗号化アルゴリズムとして定義されており、その種類は多様であります。中には、最新型セキュリティーもあれば、脆弱点を誰もが知り尽くしている古いものもあります。

もちろん、一番最新のアルゴリズムのみ使えば安全なのは当然ですが、すべてのブラウザに合わせないので、昔のOSやソフトではエラーだけが迎えてくれるでしょう。そのすべてを考慮して交換制とセキュリティー両方に近づいてみましょう。つまり、これは前回のリトライと言っても間違っていません。

IISでCipherの選択

[スタート]→[実行]に入って‘gpedit.msc’を起動するとグループ製作が出ます。グループ製作で次のパスに入ります。

パソコン管理\管理テンプレート\ネットワーク\SSL構成設定

SSL Cipher Suite Order項目を押して‘使用’を選択すると、下に入力欄があります。デフォルトはこのようになっています。

TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
TLS_RSA_WITH_AES_256_GCM_SHA384,
TLS_RSA_WITH_AES_128_GCM_SHA256,
TLS_RSA_WITH_AES_256_CBC_SHA256,
TLS_RSA_WITH_AES_128_CBC_SHA256,
TLS_RSA_WITH_AES_256_CBC_SHA,
TLS_RSA_WITH_AES_128_CBC_SHA,
TLS_RSA_WITH_3DES_EDE_CBC_SHA,
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,
TLS_DHE_DSS_WITH_AES_256_CBC_SHA,
TLS_DHE_DSS_WITH_AES_128_CBC_SHA,
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA,
TLS_RSA_WITH_RC4_128_SHA,
TLS_RSA_WITH_RC4_128_MD5,
TLS_RSA_WITH_NULL_SHA256,
TLS_RSA_WITH_NULL_SHA,
TLS_PSK_WITH_AES_256_GCM_SHA384,
TLS_PSK_WITH_AES_128_GCM_SHA256,
TLS_PSK_WITH_AES_256_CBC_SHA384,
TLS_PSK_WITH_AES_128_CBC_SHA256,
TLS_PSK_WITH_NULL_SHA384,
TLS_PSK_WITH_NULL_SHA256

RSA + PSK WITH NULLってなんでしょう

高順位ではありますが、RC4はもちろん、別途の暗号化アルゴリズムを持っていないものも見えます。これが保安の弱点になりうるところです。

Windowsのドキュメントでの提案

Windows公式ドキュメントからも関わっている情報を公開しています。この通りなら、大きく2つに注意しましょう。

  • 一部cipherはHTTP/2バージョンのコネクトをサポートしていないので、通信に失敗します。バージョンが2になると同時リクエストができるので、速度に必要です。
  • SCH_USE_STRONG_CRYPTOのYesバリューになっているものは安全だとみられております。なのに、SSLLabsは厳しく見るので、WEAKが付く可能性があることを忘れてはいけません。

ここでSCH_USE_STRONG_CRYPTOがYesになっているののみ入れてみます。

TLS_PSK_WITH_AES_256_GCM_SHA384,
TLS_PSK_WITH_AES_128_GCM_SHA256,
TLS_PSK_WITH_AES_256_CBC_SHA384,
TLS_PSK_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
TLS_RSA_WITH_AES_256_GCM_SHA384,
TLS_RSA_WITH_AES_128_GCM_SHA256,
TLS_RSA_WITH_AES_256_CBC_SHA256,
TLS_RSA_WITH_AES_128_CBC_SHA256,
TLS_RSA_WITH_AES_256_CBC_SHA,
TLS_RSA_WITH_AES_128_CBC_SHA,
TLS_RSA_WITH_3DES_EDE_CBC_SHA,
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256

再びSSLLabsテストを受けてみたら、未だにWEAK判定はあります。RC4を消すことでランクもAにアップしました。

報告書を見ながら問題となったcipherを強調してみます。

TLS_RSA_WITH_AES_256_GCM_SHA384,
TLS_RSA_WITH_AES_128_GCM_SHA256,
TLS_RSA_WITH_AES_256_CBC_SHA256,
TLS_RSA_WITH_AES_128_CBC_SHA256,
TLS_RSA_WITH_AES_256_CBC_SHA,
TLS_RSA_WITH_AES_128_CBC_SHA,
TLS_RSA_WITH_3DES_EDE_CBC_SHA

このcipherさえなければ、問題ないってことですね。 さらに、ブラウザの優先順位に合わせて順番も変えました。

TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_PSK_WITH_AES_256_GCM_SHA384
TLS_PSK_WITH_AES_128_GCM_SHA256
TLS_PSK_WITH_AES_256_CBC_SHA384
TLS_PSK_WITH_AES_128_CBC_SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256

HSTS設定をすることでA+を目指そう

Cipherも無欠になったところなので、最後にもう一押しでA+を撮る裏ワザを紹介いたします。

SSLが強制されるサイトでHTTP Response Headersを設定します。

[追加(Add)…]を押して新しいアイテムを追加しましょう。

ご覧になってるように、Strict-Transport-Securityを設定します。このバリューを設定したうえで、ヘッダーに転送されたら、ユーザークライアントブラウザでは今後このサイトに対するリクエストをすべてHTTPSのみに制限し、一時的にHTTPになる可能性を防げるので、より安全な通信ができます。

ただし、これからは証明書の抹消、期限切れの問題があった場合、サイトにまったく接続できなくなるかもしれません。証明書の管理に特に気を付けなければなりません。

Name: Strict-Transport-Security
Value: max-age=31536000

SSLLabsは少なくとも120日(10368000秒)以上を要求し、理想的な値は1年(31536000秒)だそうです。

また、平文伝送の場合、このようなヘッダーは望ましくないので、リダイレクトの専用サービス一つを作り、SSL専用サイトのみこのような設定をした方がいいそうです。

あら、まだA+が出ておりません。

IISの限界というか残念なところがあります。これに対する対策も立てましょう。

  • SHA1とRC4とRCがCipherに存在しないことを確認しました。
  • OCSP StaplingはIISのデフォルト状態で問題はなさそうです。ただし、Must Stapleオプションの決め方はまだ分かっておりません。
  • Forward SecrecyはECDHEとDHEさえサポートしていれば、適切にrobust supportができるはずです。
  • TLS_FALLBACK_SCSV: ブラウザがフォールバックトライができるようにして、古いセキュリティ標準にダウングレードする攻撃につながる可能性を断つ必要があります。この脆弱でPOODLE攻撃につながることもあります。残念ながら、この機能はIISではサポートされてないそうです。
    • 代わりにTLS1.2バージョンのみサポートすることで、低いバージョンで繋がる可能性を遮断できます。
    • TLS1.2のみ許容すると次のようなデバイスでは接続できません。
      • Android 4.3以前の機器
      • Baidu 2015年1月以前バージョン
      • XPでのIE62~IE8
      • VistaでのIE7~IE8
      • Windows 7でのIE8~IE10 (Windows 7での最新バージョンはIE11)
      • Windows Phone 8.0でのIE8
      • Java 6, Java 7
      • OS X 10でのSafari 6.x

この作業の結果、A+を獲得するに成功しました。しかしながら、捨てられるデバイスが相当な割合を占めるようで、実際に適用するには難しいところがあります。

HangmanAndroid (2018)

HangmanAndroidはオンラインの状態で、サーバーと通信し、接続している全員と一緒に英単語問題を解いてみるハングマンゲームのアンドロイドアプリです。

開発動機

SCITマスター第3回個人プロジェクト

BokunoVocaの開発により、単語学習プログラムについての可能性と同時に思い残すこともありました。ここでネットワーク機能を積極的に利用したらさらに面白くなるかもしれないと思いました。特にSpringとAndroidの組み合わせでHTTP通信の構成が可能ならば、その効果は大きくなるに違いありません。ちょうどWordamentという既存のMicrosoft Studioゲームをモチーフにした全世界人向けのゲームを作ることになりました。

開発言語とツール

  • JAVA, Android
  • Android Studio
  • Android SDK API 23 (Marshmallow)

続きを読む

Windows Server IISにASPリモートデプロイメントする方法

Javaを長年続いてきたことがある方なら、Spring MVCでApache Tomcatに一気にアップロードできるEclipseの連動した環境が結構魅力的な場面だと同意すると思います。最近はファイル一つ一つをFTPでアップロードするより、パッケージにして一気にサイトの構築を済ませることが、マネジメントにも、問題発生の可能性も下げられるのでだんだん広まってくるでしょう。

この記事でIISでASPリモートデプロイメントが可能になる方法を紹介いたします。

持ち物

  • Windows Server 2012以上のサーバーOS
    • もちろんIIS役割は必須です。
    • Windows 8.0, 8.1はサポートされていないと書かれていますが、Windows 10ではこのようなことができるのかまだ確認しておりません。
  • Web Deployのインストールファイル (.msi)
  • 開発用のPCの場合、Visual Studio 2017 Community以上
    • パッケージを作れる他のパソコンでのことです。

手順

サーバー役割の選択

サーバーマネージャーで役割と機能の追加を押します。

IISマネージャーをすべて選んでインストールします。これを先にした方が成功につながるようです。

Web Deployのインストール

Web Deployソフトウェアをインストールします。Web PIで3.5、3.6バージョンをボタン一回クリックでインストールもできますが、これが問題の原因になりがちです。

一番大きい問題は接続テスト段階で404、550エラーのようなことが起こるということです。必要なコンポーネントがまったく一緒にインストールされないようです。

そういう恐れを逃れるため、自分でリンクをクリックしてインストールしてみましょう。ファイルは上記の持ち物にあります。

インストールウィザードですべてのコンポーネントインストールを必ず選んでください。インストール完了したら、サーバーも一回再起動します。できるならシステム再起動してですね。

IISメニューを読み直しする必要があるからです。

IISのエキストラ設定

再起動はいかがでしたか。IISでの仕事がまだ残っています。

もし、すべてが順調ならば、Management Servicec Delegation項目も見えるはずです。

今は何もすることはありませんが。

私がこれからリモートで管理するサイトを(作るか、既存のものを)選択して、デプロイ(Deploy)のウェブデプロイ設定(Configure Web Publish Deploying…)を押します。

ここでデプロイ権限を設定したら、このサイトにアップロードをもらえるようになります。

サイトの設定が終わったら、マネジメントサービス(Management Service)に入りましょう。

ID資格証明を適当に設定し、証明書も使えるようにhttpsの証明書を選んでおきます。

自分のドメインネームを合う証明書を事前にもらって置いたらさらに便利でしょう。

接続テスト

間違いなく設定したら、Visual Studioで接続を確かめられます。

ソリューションのプロジェクトのメニューで [公開(Publish)…]に入ります。すでにしたことがあるなら、保存されたプロフィールが先に出ると思います。

ターゲットメソッドはIISにしましょう。

Web Deployを選び、サーバー(IP / ホストネーム)、IISメニューで見えるサイトの名前(Default Web Siteなど)、ユーザー名、暗証番号、ターゲットURLを入力します。

ターゲットURLはコネクションに影響はないはずですが、プレビューのアドレスに活用するようです。

[テスト(Vaildate Connection)]ボタンを押すと、上記の設定に間違いがなく、通信に成功したが表示されます。

ファイアウォールの設定

接続失敗の場合、Windowsファイアウォールが邪魔になっている可能性があります。ファイアウォールのオプションと回線からの制限も確認します。ポート番号はトラブルシューティングをご覧ください。

トラブルシューティング

  • Web Deployを復元、アップグレードする時、命令プロンプトで次のコマンドを実行し、ハンドラーとエージェントの再起動を行います。
    • net stop msdepsvc & net start msdepsvc
    • net stop wmsvc & net start wmsvc
  • 回線にあるファイアウォールが通信を邪魔してはいけません。Web Deployment Agent Serviceは普通80番、Web Management Serviceは8172番ポートを使います。
  • MsDepSvcはAdministratorあるいはAdminグループのみで実行する必要があります。ローカルでは動作しません。
  • .NET 4.0がIISに登録されていない可能性もあります。
    • .NET 4.0がインストールされておりますが、IISのサービスプールに登録されていない可能性もあります。その原因は.NET 4.0がIISのインストール前の事前になかったからです。
    • 次のコマンドで解決できます。
      • %systemdrive%\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -iru

結論

Springよりも強力なVisual Studioとサイトが繋がりました。SQLも一気にできそうですが、活用も知識次第だと思います。

IIS 7でLetsEncryptの設定

LetsEncryptは無料証明書の発行でhttpsの拡散に貢献した団体であります。1

特に、Certbotという強力なツールにより、Linux系ではApacheを使おうが、Nginxを使おうが、関係なくコマンド数行で証明書がもらえる時代になりました。

ですが、Windowsでは公式的にLetsEncryptの証明書をインストールする方法が提供されません。なのに、ソース公開も十分できているので、誰でもLetsEncryptの認証サーバーに接続して、証明書がもらえます。

だったら、自分で通信すればいいのでは?

というわけには恐れ入りますが、LetsEncryptの証明書の期限が90日以内で大変短いので、自動実行で更新されなかったら問題になりがちです。ツールの使用は避けられませんね。

そういうツールには何があるんでしょうか。

Certify The Web

https://certifytheweb.com/

現在は3.0.11 Stableバージョンと4.0 Alphaバージョンに分けられています。Alpha4の問題により、Alpha3を再公開したらしいです。

インストールは素早く進められます。

メインはこうなっています。

すぐにNew Certificateのボタンを押して、新しい証明書をもらってみましょう。
ちなみに、正式バージョンではない場合、常用はやめてほしいという警告が何回か出ます。

 

LetsEncrypt側に伝えたい自分のメールアドレスを書きます。

期限切れの到来など証明書の特異事項のお知らせが届きます。
この機能はLinuxのcertbotとまったく同じですね。

 

現在IISでサービスしているサイトを選びます。複数のサイトに使いたければ、複数選択も可能であり、サイトを選ばずに、発行のみも可能です。
Request Certificateボタンを押すと、証明書の発行は完了です。Settingsに入って、更新日程も正しいか確認する必要があります。

こうすると、IISのSSL証明書にLetsEncryptが入れられたことが分かり、今後もすぐに変更ができます。

HTTPS通信だけではなく、リモート配布機能とFTP SSLなど証明書が必要な個所に幅広く活用もできます。

限界

無料バージョンは5個のサイトまで管理ができます。プロライセンスでは3個の追加が50ドル、エンタープライズライセンスでは100個の追加が349ドルです。複数購買もできるので、多数のサイトには購入が必須です。

トラブルシューティング

  • テストボタンを押したとき、失敗する可能性もあります。外部接続確認の時、DNS確認が正しくない場合があります。インターネットのコネクションに問題がなく、サイトのバインドも設定されて2、ファイアウォールも遮ることなかったら、Request Certificateを押してみても問題はないはずです。
  • その他CloudflareなどのDNSサービスを使用中なら、API Keyを入れておいて、このアプリでDNS-01方式でチェックするようにできます。こうすれば、サーバーのファイルにテンポラリファイルの生成なしに、早く問題の余地なくドメインの持ち主の確認ができます。ワイルドカード証明書(4バージョン以降)にはDNSが必要な場合があります。

Windows 2016サーバーの構築

Windows Server 2016

とは言いましたが、ただ安く買っただけです。Windows Serverもかなりサービス値段を下げることができますね。(韓国の場合です)

今まではLinuxのUbuntu, CentOSなどでサーバー構築をLEMPの手順により、成功的に進んできましたが、Windows Serverはワクワクします。

これから何ができるのか、期待が高まりますね。

本物のIISはXP時代以降初めてです。

ASPなど古い遺産もありますが、Visual Studioと連携して、Springのように一貫したサイト管理がどう行われるかを重点的に見てみたいです。

realLyrics / realLyrics+ レアル歌詞 (2011)

realLyrics playing screen
realLyrics

レアル歌詞はオンライン『ALSong』(ESTSoftのアプリ)サーバーから歌詞を検索して、ユーザーが今聞いている音楽とシンクを合わせて表示してくれるWindows Phone 8向けの音楽プレイヤーアプリです。

開発のきっかけ

新しいOSであるWindows Phone 7.5 Mangoが世の中に出され、韓国にも出るかも知れないという期待が高まっていました。私は自分で海外購入したSamsung Omnia 7というWindows Phoneスマートフォンにすぐはまりました。しかし、使用できるアプリがまったくないという状況に落胆するしかありませんでした。そして、ないなら自分で作ってみようという新たな目標で胸が熱くなりました。

Zuneのデザインコードを受け継いだWindows PhoneのMetro Designはまるで白紙のキャンバスのように、想像力を刺激してくれました。このシンプルなデザインコードに合わせて、貧弱なプレイヤー機能を補強する工夫を始めました。

開発の言語とツール

  • C# / XAML
  • Microsoft Visual Studio 2010
  • Windows Phone 7.1 SDK

続きを読む

SQL ビュー(View) 紹介

ビューとは、CREATE TABLE で定義された実テーブルから作成される仮想的なテーブルのことです。ビューはあくまでも仮想テーブルなので、その中にデータは存在しません。ビューは実テーブルをどのように見るのかを定義したものと言えます。

もうすでに使っていますが、CREATE TABLE で定義された、データの入ったテーブルのことを実テーブル、この実テーブルから作られる仮想的なテーブルをビューと呼ぶことにします。

ビューのメリット

ビューの実体は SELECT 文によるクエリを定義したものです。ビューにアクセスすると、定義されたクエリが実行され、実テーブルから必要なデータが抽出されます。また、ビューからビューを定義することも可能です。ですから、あらかじめ毎回入力するのが面倒な複雑なクエリを一度ビューとして定義しておけば、ユーザやプログラムは単純なクエリを実行するだけですみます。

このような開発労力の軽減という観点以外に、セキュリティについてもメリットもあります。たとえば、実テーブルのデータの中に一般ユーザには見せたくないものがある場合、実テーブルへのアクセス権限を一般ユーザには与えることはできません。しかし、見せたくないデータを除いたビューを定義することにより、一般ユーザでも実テーブルのデータを利用できるようになります。

ビューの作成

ビューを作成するには CREATE VIEW 文を用います。基本構文は次のとおりです。

CREATE VIEW ビュー名 [(列名, 列名, .....)] AS
SELECT文
[WITH CHECK OPTION];

ビュー名の後には、抽出するデータの列名を記述します。列名を省略した場合、SELECT 文で指定した列の名前がそのまま使用されます。SELECT 文で演算子を使用した場合や、改めて列名を指定したい場合に明示的に記述するものです。

ビュー名と列名の後には、AS に続けて SELECT 文によるクエリを記述します。このクエリの結果がこのビューのデータということになります。[WITH CHECK OPTION] はビューの更新に関連するオプションです。ビューの更新については後の節で説明します。

この章の SQL のサンプルはこれまでの章でも使用してきた受注表・顧客表・商品表を実テーブルとして使用します。sample.21-1 では v_受注という名前のビューを定義し、最後にビューの内容を確認しています。

/* ビューの作成 */
CREATE VIEW v_受注 AS
SELECT JJ.受注番号, KK.顧客名, SS.商品名,
JJ.受注個数, JJ.納品日
FROM 受注表 JJ, 顧客表 KK, 商品表 SS
WHERE JJ.顧客コード = KK.顧客コード
AND JJ.商品コード = SS.商品コード;
 
/* 確認 */
SELECT JJ.受注番号, KK.顧客名, SS.商品名,
JJ.受注個数, JJ.納品日
FROM 受注表 JJ, 顧客表 KK, 商品表 SS
WHERE JJ.顧客コード = KK.顧客コード
AND JJ.商品コード = SS.商品コード;

定義したビューから特定の行や列を出力することも出来ます。sample.21-2 は定義したv_受注から、受注個数が 100以上である行を選択し、その顧客名、商品名及び受注個数を出力するものです。

実行結果
顧客名 商品名 受注個数
──────────── ────── ───────
KUROKIYA JUICE 300
ONSIDE BEER 200
KUSHINANA BEER 150
ONSIDE WINE 110
KUROKIYA TEA 250
KUSHINANA BEER 135
KUROKIYA BEER 290
KUSHINANA BEER 175

標準規格として

標準SQL規格としては、SQL89から使用可能です。SQL92ではCHECK OPTION、LOCAL、CASCADEの機能拡張が行なわれています。SQL99では更に機能強化が計られ、一定条件下でビューから実表のデータの更新が可能になった。なお、SQL89においては、ビューを作成できるものの、DROPステートメントが無いため削除できません。

ビューの削除

ビュー削除の際に、以下のようにSQL文を記述します。(DROPステートメントの詳細)

DROP VIEW ビュー名;

実習課題

  1. 次のテーブルを以下の条件に合わせて表示するクエリを作ってみましょう。
  • 名前を一つのコラムに入れてfullnameと呼ぶ
  • Birthdateが2001-09-01より前の人だけを表示する
id first_name last_name email birthdate added
1 Bonnie Medhurst [email protected] 1999-07-26 1982-05-01 21:32:19
2 Vincenza Streich [email protected] 2006-01-30 2000-07-15 18:19:18
3 Carter Kilback do’[email protected] 1998-12-07 1998-08-14 06:13:52
4 Mariano Stroman [email protected] 1996-06-18 2008-04-06 14:43:43
5 Deondre Kerluke [email protected] 1994-04-10 2008-06-26 22:02:19
6 Gia Towne [email protected] 1988-07-13 1982-03-22 03:16:39
7 Margarett Beahan [email protected] 2008-01-22 2010-09-12 08:59:33
8 Gilda Brekke [email protected] 1981-09-18 2016-04-14 01:17:38
9 Zackary Cummerata [email protected] 2001-05-27 2003-05-23 21:18:54
10 Kory Wiegand [email protected] 2010-03-16 1992-03-22 04:14:31
11 Vinnie Zboncak [email protected] 2016-06-23 2014-12-29 20:55:25
12 Carmella Bogan [email protected] 1978-06-10 1993-01-17 08:43:08
13 Vance Rice [email protected] 1996-10-09 1999-09-14 15:27:08
14 Coleman Maggio [email protected] 1999-11-22 2001-05-01 05:42:36
15 Patricia Zieme [email protected] 1978-11-18 1987-07-21 18:44:25
16 Jada Beer [email protected] 1991-07-17 1997-10-08 09:41:57
17 Kianna Torphy [email protected] 1994-03-17 2011-11-20 20:15:40
18 Maegan Harvey [email protected] 1979-07-18 2010-10-06 20:52:03
19 Winona Welch [email protected] 1974-10-28 2010-09-02 22:05:57
20 Queen Mosciski [email protected] 1983-05-23 1985-10-09 08:51:49

CREATE VIEW scit_view AS
SELECT (first_name || last_name) AS fullname, email
FROM scit_user
WHERE birthdate < to_date('2001-09-01','YYYY-MM-DD');

SELECT fullname, email FROM scit_view;
  1. WHEREで決められた条件に合うアイテムが元のテーブルで変わると、ビューは変わりますか。
  2. Oracleを含めて、最近のデータベースシステムではビューのINSERTやUPDATE、DELETEなどもできますが、こういったDML操作ができない場合を考えてみましょう。

 

これは、Techscoreからの原文を加工して、発表のためにまとめた資料です。

 

ワサビマンゴUSB Type C Gen 2ケーブルの受領

ワサビマンゴUSB Type-A – Type-C Gen 2ケーブル

ワサビマンゴから今回新しく出したこのUSBケーブルはもともとUSB 3.0と呼ばれていた今の3.1 Gen 1を遥かに上回るGen 2という規格をサポートしています。

未だにGen 2をしっかりサポートしている機種もないが、こういうところこそ消耗品の仕事ではないかと思います。安く買えるアクセサリーがなければ、伝送規格の環境も整えるとは思えません。

確かに、後方互換もあるし、ただ携帯を充電するだけでも問題はありません。

 

とにかく、これを早速使ってみたいです。

コミュニティからもらったステッカーは、所属感を刺激しますね。

リサイズのせいで、文字が見られなくなりましたが、色々長所を書いてあります。いわゆる自己アピールというやつですね。

プラスティックバック以外に、中に包まれているものはありません。

すでに丈夫なので、投げられたら痛いかもしれません。

ケーブルの表面には80℃、30V、VW-1、USB 3.1 HIGH SPEEDと書かれてあります。

流石にケーブルのスペックを自慢するようで、頼もしいところがありますね。

Galaxy Note 8での高速充電メッセージが出ています。これはQC 2.0のみサポートしていて、Adaptive Chargeという機能を正品充電器で使えます。QCのバージョンに惜しいところはありますが、このケーブルには容易いものだったようです。

USBテスターに表示されている電力量は11Wです。

電圧とともに心臓の鼓動が速まりますが、今までのケーブルは電圧は上がっても、電流が落ちたので、イライラしていました。

特に、12Wぐらいでコネクター当たりが熱くなる下の銀色ケーブルに持っている失望に比べるものではなかったです。格が違います。

そして、引き出しから出したLumia 950を充電します。
主が忘れ気味で、いつも放置で電源が入らないくらいでした。

電圧が低いのは、Lumia 950で入れられなかったQC 技術です。

 

python

certbotなどでpythonからのモジュールエラーが出たときのチェックリスト

Letsencypt (certbot) 設定をアップデートしてから、この前にしたUbuntuの大規模システムアップデートがあれこれ壊したことに気づいた。

実はLinuxのほとんどの部分はpythonコードを支えていると言っても過言ではないほどだが(yumとapt-getを含めるらしい)、certbotも例外ではなかった。

ただ起動しただけなのに、よく働いていたアプリがこんな大変な状態になっていた。


:~$ sudo certbot
Traceback (most recent call last):
  File "/usr/bin/certbot", line 11, in 
    load_entry_point('certbot==0.21.1', 'console_scripts', 'certbot')()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 561, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2631, in load_entry_point
    return ep.load()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2291, in load
    return self.resolve()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2297, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/lib/python3/dist-packages/certbot/main.py", line 10, in 
    import josepy as jose
  File "/usr/lib/python3/dist-packages/josepy/__init__.py", line 41, in 
    from josepy.interfaces import JSONDeSerializable
  File "/usr/lib/python3/dist-packages/josepy/interfaces.py", line 8, in 
    from josepy import errors, util
  File "/usr/lib/python3/dist-packages/josepy/util.py", line 4, in 
    import OpenSSL
  File "/usr/lib/python3/dist-packages/OpenSSL/__init__.py", line 8, in 
    from OpenSSL import crypto, SSL
  File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 16, in 
    from OpenSSL._util import (
  File "/usr/lib/python3/dist-packages/OpenSSL/_util.py", line 6, in 
    from cryptography.hazmat.bindings.openssl.binding import Binding
  File "/usr/lib/python3/dist-packages/cryptography/hazmat/bindings/openssl/binding.py", line 156, in 
    Binding.init_static_locks()
  File "/usr/lib/python3/dist-packages/cryptography/hazmat/bindings/openssl/binding.py", line 137, in init_static_locks
    cls._ensure_ffi_initialized()
  File "/usr/lib/python3/dist-packages/cryptography/hazmat/bindings/openssl/binding.py", line 124, in _ensure_ffi_initialized
    cls.lib = build_conditional_library(lib, CONDITIONAL_NAMES)
  File "/usr/lib/python3/dist-packages/cryptography/hazmat/bindings/openssl/binding.py", line 84, in build_conditional_library
    if not getattr(lib, condition):
AttributeError: cffi library '_openssl' has no function, constant or global variable named 'Cryptography_HAS_MEM_FUNCTIONS'

cffi library ‘_openssl’ has no function, constant or global variable named ‘Cryptography_HAS_MEM_FUNCTIONS’

普段の場合、関数でエラーが発生し、ライブラリーをインストールするだけで解決になるはずだが、

$ pip install cryptography

今はどうやら、pipの中の問題ではなさそうだ。cryptographyを何度もインストールしなおしても解決の見込みはない。

-Uオプションで強制アップデートをしても変化はなかった。

そして、python 2.7とpython3という表記に注目をした。すでに2.7と3で、3.5まで様々なバージョンが共存している今の状態を考えると、これは不思議なことでもない。

pipの起動ファイルはpython 2.7に対しての設定しか行われないが、certbotはpython 3で起動するため、次のようなスクリプトになっている。

#!/usr/bin/python3
# EASY-INSTALL-ENTRY-SCRIPT: 'certbot==0.21.1','console_scripts','certbot'
__requires__ = 'certbot==0.21.1'
import re
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(
        load_entry_point('certbot==0.21.1', 'console_scripts', 'certbot')()
    )

それで、問題が見えてきた。pipが2.7のpythonにモジュールを無意味にインストールしたり、アンインストールしたりを繰り返していたのだ。

これでは、python 3の問題は全然解決にならない。

$ sudo apt-get install python3-setuptools
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
  python-setuptools-doc
The following NEW packages will be installed:
  python3-setuptools
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 215 kB of archives.
After this operation, 944 kB of additional disk space will be used.
Get:1 http://ppa.launchpad.net/certbot/certbot/ubuntu xenial/main amd64 python3-setuptools all 33.1.1-1+certbot~xenial+1 [215 kB]
Fetched 215 kB in 1s (109 kB/s)
Selecting previously unselected package python3-setuptools.
(Reading database ... 109834 files and directories currently installed.)
Preparing to unpack .../python3-setuptools_33.1.1-1+certbot~xenial+1_all.deb ...
Unpacking python3-setuptools (33.1.1-1+certbot~xenial+1) ...
Setting up python3-setuptools (33.1.1-1+certbot~xenial+1) ...

easy_install python3 バージョンをインストールするためには、ubuntuでこのようなコマンドが必要だ。インストールしたばかりのeasy_install3を使って、pipも一緒にインストールしよう。

$ sudo easy_install3 pip
Searching for pip
Reading https://pypi.python.org/simple/pip/
Downloading https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9
Best match: pip 9.0.1
Processing pip-9.0.1.tar.gz
Writing /tmp/easy_install-wmqoi3hf/pip-9.0.1/setup.cfg
Running pip-9.0.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-wmqoi3hf/pip-9.0.1/egg-dist-tmp-b7xxe23x
warning: no previously-included files found matching '.coveragerc'
warning: no previously-included files found matching '.mailmap'
warning: no previously-included files found matching '.travis.yml'
warning: no previously-included files found matching '.landscape.yml'
warning: no previously-included files found matching 'pip/_vendor/Makefile'
warning: no previously-included files found matching 'tox.ini'
warning: no previously-included files found matching 'dev-requirements.txt'
warning: no previously-included files found matching 'appveyor.yml'
no previously-included directories found matching '.github'
no previously-included directories found matching '.travis'
no previously-included directories found matching 'docs/_build'
no previously-included directories found matching 'contrib'
no previously-included directories found matching 'tasks'
no previously-included directories found matching 'tests'
creating /usr/local/lib/python3.5/dist-packages/pip-9.0.1-py3.5.egg
Extracting pip-9.0.1-py3.5.egg to /usr/local/lib/python3.5/dist-packages
Adding pip 9.0.1 to easy-install.pth file
Installing pip script to /usr/local/bin
Installing pip3 script to /usr/local/bin
Installing pip3.5 script to /usr/local/bin

Installed /usr/local/lib/python3.5/dist-packages/pip-9.0.1-py3.5.egg
Processing dependencies for pip
Finished processing dependencies for pip

うまくインストールが完了したら、シェルで起動できるか確かめてみる。

$ which pip3
/usr/local/bin/pip3

このように、バイナリーの絶対パスをしっかり表示してくれている。

pip3コマンドを通じて、cryptographyモジュールも一緒に設定すると一件落着だ。バージョンで騒ぎにならないように、Uオプションも忘れずに入れて進もう。

$ sudo pip3 install -U cryptography
The directory '/home/yeon/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/yeon/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting cryptography
  Downloading cryptography-2.1.4-cp35-cp35m-manylinux1_x86_64.whl (2.2MB)
    100% |████████████████████████████████| 2.2MB 451kB/s
Collecting idna>=2.1 (from cryptography)
  Downloading idna-2.6-py2.py3-none-any.whl (56kB)
    100% |████████████████████████████████| 61kB 3.7MB/s
Collecting asn1crypto>=0.21.0 (from cryptography)
  Downloading asn1crypto-0.24.0-py2.py3-none-any.whl (101kB)
    100% |████████████████████████████████| 102kB 3.1MB/s
Collecting cffi>=1.7; platform_python_implementation != "PyPy" (from cryptography)
  Downloading cffi-1.11.4-cp35-cp35m-manylinux1_x86_64.whl (419kB)
    100% |████████████████████████████████| 419kB 833kB/s
Requirement already up-to-date: six>=1.4.1 in /usr/lib/python3/dist-packages (from cryptography)
Collecting pycparser (from cffi>=1.7; platform_python_implementation != "PyPy"->cryptography)
  Downloading pycparser-2.18.tar.gz (245kB)
    100% |████████████████████████████████| 256kB 1.8MB/s
Installing collected packages: idna, asn1crypto, pycparser, cffi, cryptography
  Found existing installation: idna 2.5
    Uninstalling idna-2.5:
      Successfully uninstalled idna-2.5
  Found existing installation: asn1crypto 0.22.0
    Uninstalling asn1crypto-0.22.0:
      Successfully uninstalled asn1crypto-0.22.0
  Running setup.py install for pycparser ... done
  Found existing installation: cryptography 1.9
    Uninstalling cryptography-1.9:
      Successfully uninstalled cryptography-1.9
Successfully installed asn1crypto-0.24.0 cffi-1.11.4 cryptography-2.1.4 idna-2.6 pycparser-2.18

なにか、うまく進行できている。

$ sudo certbot
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx

Which names would you like to activate HTTPS for?
-------------------------------------------------------------------------------

以降、何もなかったのように、動作できている。