超簡単!IISで運用中のホームページをSSL化-win-acmeを利用してLet’s Encriptを設定・自動更新

Google Chromeで表示できない

常時SSLが一般的になってきています。

レンタルサーバのWordPressでは、簡単にLet’s Encryptを利用して独自ドメインのURLをSSL化する事ができます。

問題は業務利用しているIIS利用中のaspです。

こいつもSSL化しなければ。

環境 Windows2019 サーバ上のIIS10

環境は、WindowsServer2019の上で動いているIIS10です。

win-acme

Let’s Encrypt は、与えられたドメインを制御する権限があなたにあることを検証し、証明書を発行するために、ACME プロトコルを使用しています。Let’s Encrypt の証明書を取得するためには、使用する ACME クライアントを1つ選ぶ必要があります。

ACME クライアント実装

Let’s Encryptの運営管理団体は、ISRGであり、公共の利益をもたらすデジタルインフラストラクチャプロジェクトの拠点として機能するために2013年5月に設立されています。

おすすめのACMEクライアントは「Certbot」と表記されているのですが、WindowsServerで導入事例を調べると、win-acmeの記述が多いです。というか、Certbotは、Apache,Nginxは対応しているようですが、IISは対応していないみたい。

だから、win-acmeなんですね、

公式サイトにある、Windows/IISを見ると

Windows / IIS

これだけ対応しているようですが、記事が圧倒的に多いwin-acmeを利用します。

win-acme (.NET)

ダウンロードします。

Gitではこんな感じで掲載されています。

win-acmeの設定

展開した中身はこんな感じです。

IISサーバのバインドを開きます

あらかじめホスト名を追加しておきます。

win-acmeを管理者として実行します。

実行するとコマンドプロンプトのような画面が表示されます。

N:Create certificate を選択します。

サイト名が表示されます。

すべてのサイトを選択したかったので <Enter>を入力しました。

mainホストを選びなさいという事なので、上に表示された1を選択

利用規約をデフォルトのアプリで読むか?との表示で、yes

承認するかで yes

e-mailは入力しませんでした。

特にエラーも表示されず、うまくいったようです。

設定確認

サーバ証明書を開いてみます。

サーバ証明書が登録されています。

証明書の更新用にタスクも登録されてます。

SSLのポートである、443もバインドされています。すごい、win-acmeはよくできてる。至れり尽くせりです。

サイトへのアクセス

今までhttpでアクセスするとこんな感じで表示されてました。

しかーし、Google Chromeは、自動的にhttpsに補完されます。

しっかりと保護されており、証明書も「発行者R3」で登録されています。

ルート証明書の期限

今回取得したLet’s Encryptの証明書は、Windowsのタスクスケジューラに組み込まれ、更新切れを起こさないように自動的に更新してくれます。

しかし、それを証明する認証局の証明書は時々変更される事があるようで、その時に問題が起きないかは少し注意していた方が良さそうです。

古いルート証明書から新しいルート証明書への移行は完全に透過的だが、実際には過去に問題が発生している。特に古いソフトウェアを使っている場合は注意が必要だ。

Helme氏は特に、今回の期限切れで次のソフトウェアやプラットフォームが影響を受ける可能性が高いとして注意を呼びかけている。

9月末でLet’s Encryptルート証明書が期限切れ、古い製品は要注意

基本的には、透過的に移行されるという表現なのですが、古いAndroid端末は対応できなかったりするそうで。

R3への証明書の有効期限は 2025/9/16 だそうで、この近辺には少し情報をあさっておいた方が良さそう。

Windowsネットワーク上のコンピュータがコンピュータ名で検索しても見つからない

解決方法

DNSサービスに、ホストを追加したら解決しました。

NetBIOS名って?

Windowsでは通常、「コンピュータ名」として設定される文字列がNetBIOS名として使用されています。

古いWindowsServer運用では、WINSサーバが活躍していました。

WINS はルーティングされたネットワーク環境でも、コンピュータ名の動的な IP アドレスマッピングを登録して、参照する事ができる分散データベースの仕組みになっています。

平たく言えば、「IPアドレスと、コンピュータ名を紐づける仕組み」が重要で、WINSサーバーを設置していないという環境では,ブロードキャストでNetBIOS名前解決が行われる仕組みになっていました。

ブロードキャストで名前解決するって事は、同じセグメントにないと、名前解決できないってことですね。

サーバ設定なしにコンピュータ名解決するには同じセグメントにないといけない

WINSサーバに登録しても名前解決できない

Windows2016サーバにもWINSサービスが稼働している事を確認し、

該当の名前解決させたいサーバを登録しました。

クライアントでもWINSサーバが登録されている事を確認したのですが、

ipconfig /all

Wireless LAN adapter Wi-Fi:

   説明. . . . . . . . . . . . . . . . .: Intel(R) Wireless-AC 9462
   DHCP 有効 . . . . . . . . . . . . . .: はい
   自動構成有効. . . . . . . . . . . . .: はい
   サブネット マスク . . . . . . . . . .: 255.255.252.0
   リース取得. . . . . . . . . . . . . .: 2021年12月1日 8:02:17
   リースの有効期限. . . . . . . . . . .: 2021年12月2日 8:02:12

   DNS サーバー. . . . . . . . . . . . .: 192.168.*.*
                                          192.168.*.*
   プライマリ WINS サーバー. . . . . . .: 192.168.*.*
   セカンダリ WINS サーバー. . . . . . .: 192.168.*.*
   NetBIOS over TCP/IP . . . . . . . . .: 有効

名前解決ができない状態です

C:\Users\shi>ping T340
ping 要求ではホスト T340 が見つかりませんでした。ホスト名を確認してもう一度実行してください。

DNSサーバに登録

Windowsサーバで稼働しているDNSサーバに登録したらどうなるだろうと、登録してみました。

新しいホストの登録

すると、無事コンピュータ名(NetBIOS名)で名前解決ができるようになりました。

C:\Users\shi>ping T340

T340.DNS [192.168.*.*]に ping を送信しています 32 バイトのデータ:
192.168.*.* からの応答: バイト数 =32 時間 =2ms TTL=127
192.168.*.* からの応答: バイト数 =32 時間 =2ms TTL=127
192.168.*.* からの応答: バイト数 =32 時間 =4ms TTL=127
192.168.*.* からの応答: バイト数 =32 時間 =2ms TTL=127

192.168.*.* の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 2ms、最大 = 4ms、平均 = 2ms

まとめ

NetBIOS名の名前解決もDNSで設定可能

Windowsネットワークにおいて、NetBIOS名の名前解決はDNSに問い合わせを行うようにできていて、WINSサーバの動作はなんだか別の条件、問い合わせ順序などの関係でちゃんと値を返さない事があるようです。

リモートでサインインするには、リモートデスクトップサービス経由でサインインする権限が必要です。既定ではAdministratorsグループのメンバーが?

Administratorsグループのメンバー?

Remote Desktop の設定してあります。

経験則からいって、リモートデスクトップサービスへアクセスしてもらうためには、ユーザにRemote Desktop Usersの権限を割り振れば問題なく接続できるはずなのですが、いざテストしてみると接続できないという状態になりました。

ユーザの権限を確認してみると、やっぱりちゃんと、Remote Destop Usersの権限は付与されています。

通常権限としては、Remote Destop Usersが追加されていればアクセスできるはずなのに、いざアクセスしてみると、

リモートでサインインするには、リモートデスクトップ サービス経由でサインインする権限が必要です。既定では、Administrators グループのメンバーがこの権限を持っています。所属しているグループに権限がない場合や、Administrators グループから権限が削除されている場合は、権限を追加する必要があります。

なぜなんだろう。ActiveDirectoryを設定したらこうなっちゃうのかな?

解決方法

グループポリシーエディタを開きます。

検索窓から gpedit.msc を検索してアプリとして開き

ローカルコンピュータポリシー → コンピュータの構成 → Windowsの設定 → セキュリティの設定 → ローカルポリシー → ユーザ権利の割り当て

リモートデスクトップサービスを使ったログオンを許可

を見てみると、ここは通常「 Remote Destop Users 」も入っているものなんですが、抜け落ちています。追加してあげます。

通常の状態になりました。

すると、無事ログオンできました。

Dell T340 iDRACの設定やら初期パスワードなど

iDRACにアクセスできなくなった

インストール当初、iDRACにはパスワードなしでログインできていたような気がするんですが、ActiveDirectroyなど、その他雑多な設定をして、ある日気づいたらユーザ名・パスワードが聞かれるようになっていました。

iDRACの初期パスワードは

ユーザ名:root

パスワード:calvin

これで入れました。

iDRACユーザ設定

rootユーザだとあれ何で、administratorユーザを作成して、一本化しました。

iDRACはユーザ管理可能です。

正常な状態

ハードウェアが正常な状態であれば、ダッシュボードはシステム:正常となっています。

前面のi と書かれた部分のライトは青色です

ハードディスク障害

RAIDを組んでいるディスク1本を取り外し、わざと障害を起こしてみました。

ドライブ1が取り外されたことが記載されている

ランプがオレンジ色になります。

ストレージを戻す

リビルド中はシステムに問題:警告となっています。

リビルドの状態は、その物理ディスクにアクセスすると、進行にパーセンテージが表示されます。

リビルドされている側のディスクは進行のところに ○%と表示される。

WindowsServer2019 ActiveDirectoryドメインサービス 意味のある形式で表示する事ができないオブジェクト名

他のサーバのユーザで自分のサーバにアクセスさせたい

他のサーバに登録されているユーザで、自分のサーバにもアクセス権を振って認証させたい。他のサーバで認証を受ければ、自分のサーバの認証は受けなくてもアクセス可能な状態にしたいときに、サーバ間の信頼関係を結びます。

信頼関係で不具合?

意味のある形式で表示することができないオブジェクト名がいくつかあります。オブジェクトが外部ドメインからのもので、オブジェクト名を変換するためにドメインを利用できない場合に、発生することがあります。

なんだか、うまく信頼関係が築けていないようです。

ユーザの追加を行う時はちゃんと名前が表示されるのですが、一度登録すると、こんな感じになって名前が分からない状態になります。

信頼関係は双方向で

原因は信頼関係を作成したサーバは、1台だけだったからみたいです。

親サーバ → 子サーバ

みたいなイメージで子サーバだけ、信頼関係の設定をしたのですが、親サーバの方でも信頼関係、同じ設定をしないと変な状態になりました。

子サーバだけ信頼関係を設定した場合でも、ちゃんと、親サーバのドメインを参照してユーザの追加はできたのですが、追加されたユーザがちゃんと表示できないという状態になったという事でした。

信頼関係は

サーバマネージャ → ActiveDirectoryドメインと信頼関係から設定します

親サーバの方にも新しい信頼で、相手先サーバを信頼する事でユーザがちゃんと表示できるようになりました。

DNS設定は関係ない?

マルチフォレスト間で信頼関係を結ぶ場合、お互いのドメイン間で名前解決ができるようDNSサーバーを適切に構成する必要があります。DNS構成には、次の2つのいずれかの方法を選択します。

条件付きフォワーダーの設定
セカンダリゾーンの作成

信頼関係設定時のDNS構成

というブログもみまして、セカンダリゾーンの作成を行いましたが、こちらでは、上記症状は改善されませんでした。いまのところ、セカンダリーゾーンは設定していない状態ですが特に支障ないようです。

Robocopy を利用して差分更新されたものだけ上書きバックアップ

簡単に複製したいだけ

robocopy コピー元 コピー先 /s /e

空フォルダも含めてサブフォルダ再帰的にコピーするには「/e」オプションをつける(/s /eでも同じ)

2回目以降上書きされるもの(オプションつけなくても基本的な動作)

  • コピー先に存在しないファイル
  • 名前が同じでも、更新日付が異なるファイル(新しいファイルだけではなく、コピー元の方が古くてもコピー対象となる)
  • 名前と日付が同じでも、サイズが異なるファイル

完全に同期させるためには

/mir

オプションをつける。

robocopy コピー元 コピー先 /mir

コピー元フォルダと同じ状態になるように、コピー先フォルダへファイルがコピーされる。コピー先に不足するものがあれば新規作成されるし、日付やサイズが相違するファイルがあれば上書き更新される。さらに、コピー先に余分なファイルやフォルダがあれば、それらは削除される。

コマンド基本

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Windows の堅牢性の高いファイル コピー
-------------------------------------------------------------------------------

  開始: 2021年11月19日 16:43:58
              使用法:: ROBOCOPY コピー元 コピー先 [ファイル [ファイル]...]
                       [オプション]

           コピー元 :: コピー元ディレクトリ (ドライブ:\パスまたは \\サーバー
                       \共有\パス)。
           コピー先 :: コピー先ディレクトリ (ドライブ:\パスまたは \\サーバー
                       \共有\パス)。
           ファイル :: コピーするファイル (名前/ワイルドカード: 既定値は「*.*」
                       です)

コピーオプション

::
:: コピー オプション:
::
                 /S :: サブディレクトリをコピーしますが、空のディレクトリはコピ
                       ーしません。
                 /E :: 空のディレクトリを含むサブディレクトリをコピーします。
             /LEV:n :: コピー元ディレクトリ ツリーの上位 n レベルのみをコピーし
                       ます。

                 /Z :: 再起動可能モードでファイルをコピーします。
                 /B :: バックアップ モードでファイルをコピーします。
                /ZB :: 再起動可能モードを使用します。アクセスが拒否された場合、
                       バックアップ モードを使用します。
                 /J :: バッファーなし I/O を使用してコピーします (大きなファイル
                       で推奨)。
            /EFSRAW :: 暗号化されたすべてのファイルを EFS RAW モードでコピーし
                       ます。

 /COPY:コピーフラグ :: ファイルにコピーする情報 (既定値は /COPY:DAT)。
                       (コピーフラグ: D= データ、A= 属性、T= タイムスタンプ)。
                       (S= セキュリティ =NTFS ACL、O= 所有者情報、U= 監査情報)。


               /SEC :: セキュリティと共にファイルをコピーします (/COPY:DATS と
                       同等)。
           /COPYALL :: ファイル情報をすべてコピーします (/COPY:DATSOU と同等)。
            /NOCOPY :: ファイル情報をコピーしません (/PURGE と共に使用すると便
                       利)。
            /SECFIX :: スキップしたファイルも含むすべてのファイルのファイル セ
                       キュリティを修正します。
            /TIMFIX :: スキップしたファイルも含むすべてのファイルのファイル時刻
                       を修正します。

             /PURGE :: 既にコピー元に存在しないコピー先のファイル/ディレクトリ
                       を削除します。
               /MIR :: ディレクトリ ツリーをミラー化します (/E および /PURGE と
                       同等)。

               /MOV :: ファイルを移動します (コピー後にコピー元から削除)。
              /MOVE :: ファイルとディレクトリを移動します (コピー後にコピー元か
                       ら削除)。

     /A+:[RASHCNET] :: コピーされたファイルに指定の属性を追加します。
     /A-:[RASHCNET] :: コピーされたファイルから指定の属性を削除します。

            /CREATE :: ディレクトリ ツリーと長さ 0 のファイルのみを作成します。
               /FAT :: 8.3 FAT ファイル名のみを使用してコピー先ファイルを作成し
                       ます。
               /256 :: 256 文字を超える非常に長いパスのサポートをオフにします。

             /MON:n :: コピー元を監視し、n 回を超える変更があった場合に再度実行
                       します。
             /MOT:m :: コピー元を監視し、m 分後に変更があった場合に再度実行
                       します。

      /RH:hhmm-hhmm :: 実行時間 - 新しいコピーを開始できる時刻です。
                /PF :: 実行時間をファイルごと (パスごとではない) に確認します。

             /IPG:n :: 低速回線で帯域幅を解放するためのパケット間ギャップ (ミリ
                       秒)。

                /SL :: 対象ではなくシンボリック リンクをコピーします。

            /MT[:n] :: n 個のスレッドのマルチスレッド コピーを実行します
                       (既定値 8)。
                       n は 1 から 128 までの値である必要があります。
                       このオプションは、/IPG および /EFSRAW オプションと互換性
                       がありません。
                       パフォーマンスの向上のため、/LOG オプションを使用して出力
                       をリダイレクトします。

/DCOPY:コピーフラグ :: ディレクトリにコピーする情報 (既定値は /DCOPY:DA)。
                       (コピーフラグ: D= データ、A= 属性、T= タイムスタンプ)。

           /NODCOPY :: ディレクトリ情報をコピーしません (既定では /DCOPY:DA が
                       実行されます)。

         /NOOFFLOAD :: Windows のオフロードをコピーするメカニズムを使用せずに、
                       ファイルをコピーします。

WindowsServer2019 アダプターのオプションを変更する Control.exe 指定されたデバイスにアクセスできない

control.exe にアクセスできない?

WindowsServer2019 をActiveDiretoryを構築し、ネットワークアダプタの設定変更しようと思ったら以下のようなエラーが出るようになってしまいました。

指定されたデバイス、パス、またはファイルにアクセスできません。これらの項目にアクセスするための適切なアクセス許可がない可能性があります。

どうやら、アクセス権がおかしくなってしまったようです。

Administratorでアクセスしてるんですが、ActiveDirectoryを構築した事により、ローカルのAdministratorの権限が何かおかしくなってしまったようです。

解決方法

gpedit.msc

グループポリシーエディターを起動します。

通常なら、検索窓に「gpedit.msc」と入力すれば起動できたものが、これも起動できない状態になっています。

ファイルの場所を開き

直接ファイルをダブルクリックすると起動しました。

コンピュータの構成 → Windowsの設定 → セキュリティの設定 → ローカルポリシー → セキュリティオプション → 

ユーザカウント制御:ビルトインAdministratorアカウントのための管理者認証モード

を有効にします。

サーバ再起動後、無事にNICのアダプタにアクセスできるようになりました。

常時SSLへの対応 デジタルサイネージで格安に動画を流す SmartSlider3 Pro

Chromeのアップデートによりhttpに警告が出る

M94以降、ChromeはHTTPSファーストモードを提供します。このモードでは、すべてのページの読み込みをHTTPSにアップグレードし、サポートしていないサイトを読み込む前に全ページの警告を表示します。

HTTPSの採用の増加

HTTPS 優先モード機能は、HTTPS(暗号化通信)での通信を前提にしており、HTTP(非暗号通信)のサイトを読み込む前に警告を表示します。Chrome 94 以降では、ユーザーがこのモードを有効にした場合に警告が表示されますが、今後将来的に HTTPS 優先モードが標準化することが検討されています。

Chrome 94、HTTPS 優先モード機能を搭載

Google Chromeでの設定は、デフォルトでオフになっています。

これをオンにしたときの挙動

http にアクセスすると、自動的にhttps にアクセスし、対応していなければ警告を出すというものです。

これをオフにした時の挙動

http にそのままアクセスできます。

今後予想される事

今後、この機能はデフォルトでオンになりそうです。http://が一掃されそうな勢いです。

SSL化されたページでのhttp://を取得する混合コンテンツ問題

混合コンテンツが表示できなくなる問題の事です。

以前ロリポップでは、http://chips.jp/hoge

はそのままhttpでしかアクセスできなかったと思うのですが、いつの間にか

https://chips.jp/hoge

にアクセスできるようになっていました。このため、勝手にSSL接続に回され、ホームページ自体は表示できるようになっているのですが、Smart Slide Pro3で指定したhttp://あてのmp4が取得できないという状態になってました。

ある時から、映像再生できなくなりましたとなる可能性が高く、https:// のURL内でhttpが表示されてるよというのが原因です。

Mixed Content: The page at ‘https://****.chips.jp/sign-aichi/toyota01/’ was loaded over HTTPS, but requested an insecure element ‘http://****.chips.jp/sign-videos/HonbuData.mp4’. This request was automatically upgraded to HTTPS, For more information see https://blog.chromium.org/2019/10/no-more-mixed-messages-about-https.html

インラインフレームを作成したときに同じ問題に当たったことがあったのですぐに検討がつきましたが、Smart Slider 3で映像を読み込むときにも同じ問題が発生するんですね。

今回の対処

首尾よくロリポップは、https://対応されているようです。

今まではhttpでなければアクセスできなかったのですが、勝手にhttps://でアクセスできるので、

  • 主ページはhttpでアクセスされてもそのままhttps://が表示される
  • smart slider 3に登録されているURLをhttps://に変更する

事で対応可能です。

.htaccessの変更

.htaccessの Refererによる制限で、mp4データにアクセスできるドメインを制限しています。そこで、https://からのアクセスも許可しておかないと、映像が受信できなくなってしまいます。

# For Access Control
SetEnvIf Referer "^http://hoge\.chips\.jp" ok_url
SetEnvIf Referer "^https://hoge\.chips\.jp" ok_url
SetEnvIf Referer "^http://sign-kaigai\.hoge\.com" ok_url
SetEnvIf Referer "^https://sign-kaigai\.hoge\.com" ok_url
order deny,allow
deny from all
allow from env=ok_url

Windows2019 WindowsServerバックアップによる障害時の回復手順

WindowsServerインストールイメージからの復元

WindowsServer2019インストールイメージから回復する際には注意が必要です。

  • 外付けドライブでもOK
  • WindowsImageBackupという名前を変更してはいけない
  • WindowsImageBackupという名前を変更している場合は元に戻す
  • WindowsImageBakupはどのドライブでもいいからルートに置く
  • ネットワーク越しの復元で共有フォルダにユーザ名・パスワードによるアクセス制限がかかっているとうまく認証されない

USBハードディスクからの復元

復元前にWindowsImageBackupという名前に変更しておくこと

サーバにインストールイメージをいれたハードディスクと、WindowsImageBackupが入ったハードディスクをセットする

F11キーを入力し、Boot Managerを起動する

One-shot UEFI Boot Menuを選択する

外付けUSBハードディスクを選択。このハードディスクはWindowsServer2019インストールディスクのブートイメージが入っている

※インストールメディアHDDを作りたい場合は以下をご参考下さい

コンピュータを修復する をクリックする

トラブルシューティングをクリック

イメージでシステムを回復 をクリック

回復イメージがちゃんと出てきました

ネットワーク共有フォルダからの回復

結論からいって私はうまくいきませんでした。

何度やっても、ユーザ名・パスワードではじかれてしまう。日本語が文字化けしてしまっているので、これが原因かと。

英語モードで起動して、文字化けが直っても、やっぱりパスワードではじかれてしまいました。ネットワーク共有フォルダからの復元はあきらめました。

※Windows起動状態からネットワーク共有フォルダの復元は可能です

Windows起動状態からの回復

Windows2019 HDDインストールイメージを作成しているので、このハードディスクで起動します。これはWindowsServer2019のインストールディスクです。

Windows Server バックアップを選択します

Windows稼働状態から回復…を選択、

このサーバ → 内臓HDDか、もしくは外付けHDDにバックアップした場合

別の場所に保存されているバックアップ → ネットワーク上の共有フォルダにバックアップした場合

インストールメディアから起動し回復を選択した場合

  • 円マークが入力できない、キーボードを英語102に選択する事でやっと入力
  • ネットワークにバックアップしたものはパスワードが適合ないという事で復元できなかった

このサーバを選択する場合

※Windowsが起動している状態で、回復を選択した場合は「WindowsImageBackup」というフォルダ名を変更していてもバックアップファイルを見つけ出してくれる。しかし、インストールメディアから起動して回復を選択した場合は、それぞれのドライブルートに「WindowsImageBackup」というフォルダ名になっていないと見つけ出してもらえない

外付けHDDもちゃんと精査してくれるみたい。

リモートを選択する場合は

\\192.168.0.15\BackupData

まずは\マークが入力できない

という形で指定する

ボリューム全体は復元できなかった

システム状態で復元できる

元の場所に復元する

システム状態を復元

この状態で、システムが復元された際

DebianLinux 軽量でVisualStudio Code開発すいすい-ChromeとVS Codeのインストール初期設定

Lenovo Twist ThinkpadにDebianLinuxインストール

ほとんど苦労なくインストールできました。

無線LANだけ認識されずコツが分かるまで苦労しましたが、無線LANも何とかインストール完了し、無線LANも利用できるようになりました。

インストール時に見つからないファームウェアがあり、これがヒントになって解決できました。

iwlwifi が見つからないとあります。

これは、Intel Wireless cardsです。詳しくはこちらで。

Debian パッケージではnon-freeの中にfirmware-iwlwifi が準備されています。

source.listに non-freeを追記します。

deb http://deb.debian.org/debian/ bullseye main contrib non-free
deb-src http://deb.debian.org/debian/ bullseye main contrib non-free

deb http://security.debian.org/debian-security bullseye-security main contrib non-free
deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free

そして、firmware-iwlwifiをインストール

    /etc/apt/sources.list
    apt-get update
    apt install firmware-iwlwifi

再起動したら無線LAN接続できるようになりました。

lenovo TwistはCore i5で性能的に少し余裕があるのでGnomeを入れてあります。すいすい動きます。

Chromeのインストール

debianにChromeをインストールします。

Chromeのダウンロードページを開くと、自動的に認識してくれるのか .debダウンロードパッケージを選択してくれます。

そのまま開くのではなく、いったん保存します。

ダウンロードしてできたファイルを右クリックして、「別のアプリケーションで開く」を選択します。ダウンロードした.debファイルは、ダウンロードフォルダに入ります。

ソフトウェアのインストールを選択します。

インストール画面が表示されます。インストールボタンをクリックします。

アクティビティメニューの中にChromeが追加されます。自動的にメニューに追加されてくるのもちょっと感動を覚えます。Windowsだったら当たり前のことでしたが、Linuxのウィンドウマネージャでは自分で登録する必要がありました。

Gnomeは、その必要ありません。

Chromeを起動してみます。7年以上前のパソコンですが、かなり快適に利用できます。

VS Codeのインストール

VisualStudio Codeは、LinuxでもC#開発、.net開発が可能です。私はC#の開発がしたいので、C#用に開発環境を整えていきます。

拡張機能をインストールしていきます。

.NET Coreもインストールしておきます。インストールの仕方はMicrosoftのドキュメントを参考にします。

.NET SDKのインストール

Debian に .NET SDK または .NET ランタイムをインストールする

パッケージリポジトリの追加

# wget https://packages.microsoft.com/config/debian/11/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
# sudo dpkg -i packages-microsoft-prod.deb
以前に未選択のパッケージ packages-microsoft-prod を選択しています。
(データベースを読み込んでいます ... 現在 150410 個のファイルとディレクトリがインストールされています。)
packages-microsoft-prod.deb を展開する準備をしています ...
packages-microsoft-prod (1.0-debian11.1) を展開しています...
packages-microsoft-prod (1.0-debian11.1) を設定しています ...

※ dpkg -i の前にsudoをつけないと、エラーが出て怒られる

# dpkg -i packages-microsoft-prod.deb
dpkg: 警告: 'ldconfig' が PATH 上に見つからないか実行可能になっていません
dpkg: 警告: 'start-stop-daemon' が PATH 上に見つからないか実行可能になっていません
dpkg: エラー: 2 個の期待されるプログラムが PATH 上に見つからないか実行可能になっていません
(注): root の PATH は通常、/usr/local/sbin、/usr/sbin、/sbin を含んでいるはずです

donet-sdk-5.0をインストール

apt-get update
apt-get install -y apt-transport-https
apt-get update
apt-get install -y dotnet-sdk-5.0

Visual Studio Code .debパッケージのインストール

Visual Studio Codeのダウンロードページから、Debian用の.debパッケージをダウンロードします。

ダウンロードしたファイルは、「ダウンロードフォルダ」に入りますので、Chromeのインストールと同じ要領でインストールします。

右クリックして「別のアプリケーションで開く」

インストールボタンをクリックします。

アクティビティにVS Codeのアイコンが追加されます。

Visual Studio Code C#開発の設定

私はC#で開発したいので開発環境を整えてみます。Visual Studio Codeを起動します。最初は英語になっていますが、親切に言語パックのインストールを進めてくれるので、インストールします。

日本語になりました。

拡張機能のインストール

拡張機能、マーケットプレースの検索窓から必要な拡張機能を探しインストールしていきます。

C#

インテリセンスや、定義へ移動、C#のデバッグができるようになる。.NET Core(CoreCLR)のデバッグサポート

VS Sharper for c#

新しいC#クラスまたはインターフェイスファイルを追加する

C# Extensions

この拡張機能は、フォルダーツリーをトラバースしてproject.jsonまたは* .csprojを見つけ、それを親フォルダーとして使用して名前空間を決定します。

C# XML Documentation Comments

Visual StudioCodeのXMLドキュメントコメントを生成します。

この拡張機能は将来非推奨になる

C# for Visual Studio Code (powered by OmniSharp)現在、v1.23.8(2020年12月18日)からのドキュメントコメントを公式にサポートしています。をオンにすると、公式のものを使用できますEditor: Format On Type。

XMLドキュメントコメントVisualStudioCodeのサポート

NuGet Package Manager

VSCode用のNugetパッケージマネージャーGUI。Nugetサーバーから簡単にパッケージ化できるVisualStudioCodeの拡張機能

開発を始める

とりあえず、C#で開発が始められるところまで持っていきたいと思います。

ドキュメントの中にフォルダを作成し、TestProjectという名前にしました。

ターミナルメニュー→新しいターミナルをクリックして、ターミナル画面を開きます。

その後ターミナルにて、 dotnet new consoleを実行します。

指定したフォルダ内に必要ファイルが生成されます。

実行してみます。コンソールアプリとして”Hello World!”があらかじめプログラムされています。

実行→デバッグの開始

とすると初回起動時にbuildとdebugがないと怒られるので、Yesをクリックして作ってもらいます。

再度 実行→デバッグの開始 を行うと、無事Hello World! が表示されました。