PowershellでTLS1.2を使いたかった

お仕事では基本的にLinuxおじさんしていて、
メインで使っている端末もMacになったので
基本的にpowershellを触る機会ってほぼないんですが、
面倒を見ているサーバーの中に一つだけ
Windows Serverで稼働しているシステムがあるんです。。

Packer + Ansible で AMI 作ってるんですが、
久しぶりにビルドしたら動かなくなっていた部分があって
修正したうちの一つのメモがこの記事です。

環境

Windows Server 2012 R2

やりたかったこと

  • https://curl.haxx.se/ca/cacert.pem のダウンロード

少し前だと TLS1.0 でも問題なかったんですが、
いつのまにか TLS 1.2 じゃないと接続できないようになっていたようで・・

$ sslscan curl.haxx.se
Version: 1.11.10-static
OpenSSL 1.0.2f  28 Jan 2016
Testing SSL server curl.haxx.se on port 443 using SNI name curl.haxx.se
TLS Fallback SCSV:
Server supports TLS Fallback SCSV
TLS renegotiation:
Session renegotiation not supported
TLS Compression:
Compression disabled
Heartbleed:
TLS 1.2 not vulnerable to heartbleed
TLS 1.1 not vulnerable to heartbleed
TLS 1.0 not vulnerable to heartbleed
Supported Server Cipher(s):
Preferred TLSv1.2  128 bits  ECDHE-RSA-AES128-GCM-SHA256   Curve P-256 DHE 256
Accepted  TLSv1.2  256 bits  ECDHE-RSA-AES256-GCM-SHA384   Curve P-256 DHE 256
Accepted  TLSv1.2  128 bits  ECDHE-RSA-AES128-SHA256       Curve P-256 DHE 256
Accepted  TLSv1.2  256 bits  ECDHE-RSA-AES256-SHA384       Curve P-256 DHE 256
Accepted  TLSv1.2  128 bits  ECDHE-RSA-AES128-SHA          Curve P-256 DHE 256
Accepted  TLSv1.2  256 bits  ECDHE-RSA-AES256-SHA          Curve P-256 DHE 256
Accepted  TLSv1.2  128 bits  AES128-GCM-SHA256
Accepted  TLSv1.2  128 bits  AES128-SHA
Accepted  TLSv1.2  256 bits  AES256-SHA
SSL Certificate:
Signature Algorithm: sha256WithRSAEncryption
RSA Key Strength:    2048
Subject:  j2.shared.global.fastly.net
Altnames: DNS:j2.shared.global.fastly.net, DNS:*.a2presse.fr, DNS:*.adventistbookcenter.com, DNS:*.api.lolesports.com, DNS:*.baatch.com, DNS:*.biotechweekboston.com, DNS:*.bloombergquint.com, DNS:*.casper.com, DNS:*.chakralinux.org, DNS:*.dev.mediaos.hearst.io, DNS:*.devspaceship.com.au, DNS:*.filestack.com, DNS:*.fs.enplug.in, DNS:*.fs.heroine.com, DNS:*.fs.learnzillioncdn.com, DNS:*.fs.localzillioncdn.com, DNS:*.fs.mindflash.com, DNS:*.fs.opszillioncdn.com, DNS:*.fs.qazillioncdn.com, DNS:*.fs.testzillioncdn.com, DNS:*.gaonconnection.com, DNS:*.haxx.se, DNS:*.hearstdigitalstudios.com, DNS:*.hearstdigitalstudios.net, DNS:*.homeaway.lk, DNS:*.julialang.org, DNS:*.kindsnacks.com, DNS:*.kssvanilla.com, DNS:*.kstcorra.com, DNS:*.kstvanilla.com, DNS:*.mother.ly, DNS:*.nationalheraldindia.com, DNS:*.news12.com, DNS:*.radivate.com, DNS:*.rarecarat.com, DNS:*.tasty.co, DNS:*.tedcdn.com, DNS:*.thezoereport.com, DNS:*.topspeed.com, DNS:*.vouchercodes.co.uk, DNS:*.weather.com, DNS:a.icanvas.com, DNS:a2presse.fr, DNS:adventistbookcenter.com, DNS:api-merryjane.com, DNS:api.zender.tv, DNS:app-api.ted.com, DNS:app.birchbox.co.uk, DNS:app.birchbox.es, DNS:app.staging.birchbox.co.uk, DNS:app.staging.birchbox.es, DNS:baatch.com, DNS:bernardcontrols.com, DNS:biotechweekboston.com, DNS:bloombergquint.com, DNS:casper.com, DNS:cdn.irsdn.net, DNS:chakralinux.org, DNS:devspaceship.com.au, DNS:digiday.com, DNS:digitalLibrary.bernardcontrols.com, DNS:documentation.percipio.com, DNS:fs.learnzillioncdn.com, DNS:fs.localzillioncdn.com, DNS:fs.opszillioncdn.com, DNS:fs.qazillioncdn.com, DNS:fs.testzillioncdn.com, DNS:gaonconnection.com, DNS:homeaway.lk, DNS:img.triggermail.io, DNS:kindsnacks.com, DNS:kssvanilla.com, DNS:kstcorra.com, DNS:media-bolt.licdn.com, DNS:media-origin-fastly.ap-northeast-1.prod.boltdns.net, DNS:media-origin-fastly.ap-northeast-1.stage.boltdns.net, DNS:media-origin.ap-northeast-1.prod.boltdns.net, DNS:media-origin.ap-northeast-1.stage.boltdns.net, DNS:menu.treez.io, DNS:mobileapi.idatalink.com, DNS:mother.ly, DNS:nationalheraldindia.com, DNS:new.frankbody.com, DNS:news12.com, DNS:oreilly.review, DNS:prod.bernardcontrols.com, DNS:radivate.com, DNS:rarecarat.com, DNS:repositories.sensuapp.org, DNS:rl.talis.com, DNS:rossirovetti.com, DNS:staging.moo.com, DNS:static-bolt.licdn.com, DNS:static.plumcache.com, DNS:stayingalive.msf.org, DNS:tasty.co, DNS:thezoereport.com, DNS:topspeed.com, DNS:vouchercodes.co.uk, DNS:weather.com, DNS:whitekeyvillas.com, DNS:whocanivotefor.co.uk, DNS:womenshealth-jp.com, DNS:www.avenir-suisse.ch, DNS:www.canstar.co.nz, DNS:www.canstarblue.co.nz, DNS:www.canstarblue.com.au, DNS:www.championshockeyleague.net, DNS:www.exterro.com, DNS:www.ezup.com, DNS:www.fotor.com, DNS:www.frankbody.com, DNS:www.goldcup.org, DNS:www.icanvas.com, DNS:www.lightsonline.com, DNS:www.monin.com, DNS:www.odense-marcipan.dk, DNS:www.oneclickdrive.com, DNS:www.oreilly.review, DNS:www.rawnet.com, DNS:www.spokeo.com, DNS:www.whitekeyvillas.com
Issuer:   GlobalSign CloudSSL CA - SHA256 - G3
Not valid before: Oct 22 12:30:12 2017 GMT
Not valid after:  Apr  6 17:14:48 2018 GMT

記事を書いた時点で sslscan してみた結果はこんな感じでした。

TLS1.2じゃないとつなげないこと自体は別に問題じゃなくて、
問題だったのはpowershellが標準だとTLS1.0でしか
接続できないという方ですね。。

参考にしたページ

Chocolatey 使ってる人もはまるみたいですね

やること

Invoke-WebRequest を呼び出す前に下記を実行する

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

普段触らないので、いちいち指定しないと
動いてくれないのはすごくめんどくさいですね。。

最終形態としては以下のような感じに

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-WebRequest -Uri https://curl.haxx.se/ca/cacert.pem -OutFile c:\path\to\cacert.pem

ぱっと検索した感じ日本語記事なかったので困った人のお役に立てれば何よりです

ではでは〜

コメント