পাওয়ারশেল ব্যবহার করে একটি আইআইএস সাইটে একটি বন্ডিং যুক্ত করুন


19

আমি পাওয়ারশেল ব্যবহার করে একটি আইআইএস অ্যাপে বাইন্ডিংগুলি নিয়ন্ত্রণ করার চেষ্টা করছি। আমি একটি স্ক্রিপ্ট ব্যবহার করে একটি HTTP এবং https উভয়ই বাঁধাই করে একটি সাইট তৈরি করতে চাই।

এটাই আমার এতদূর হয়েছে:

Param(
    [Parameter(Mandatory=$True,Position=1)]
    [string]$hostname,
    [Parameter(Mandatory=$True,Position=2)]
    [string]$installPath,
    [Parameter(Mandatory=$False,Position=3)]
    [string]$ip
)

Import-Module WebAdministration

$appPoolName =  $hostname + 'Pool'

$port = 80
$hostRecord = $hostname+'.example.com'

$bindings = @{protocol="http";bindingInformation=$ip + ":"+ $port + ":" + $hostRecord}

New-Item IIS:\AppPools\$appPoolName
Set-ItemProperty IIS:\AppPools\$appPoolName managedRuntimeVersion v4.0

New-Item IIS:\Sites\$hostname -Bindings $bindings -PhysicalPath $installPath
Set-ItemProperty IIS:\Sites\$hostname -Name applicationPool -Value $appPoolName

আমি কীভাবে আমার $bindingsপরিবর্তনশীলটিতে বাইন্ডিং যুক্ত করতে পারি / আমার লক্ষ্য অর্জনের জন্য অন্য কোনও প্রক্রিয়া ব্যবহার করি?

উত্তর:


24

আপনি নিউ-ওয়েববাইন্ডিং ব্যবহার করতে পারেন: http://technet.microsoft.com/en-us/library/ee790567.aspx

যেমন

IIS:\>New-WebBinding -Name "Default Web Site" -IPAddress "*" -Port 80 -HostHeader TestSite

যতক্ষণ এই তাত্ত্বিক প্রশ্নের উত্তর হতে পারে, এটা বাঞ্ছনীয় হবে উত্তর অপরিহার্য অংশের এখানে অন্তর্ভুক্ত করা, এবং রেফারেন্স এর জন্য লিঙ্ক প্রদান।
মার্ক হেন্ডারসন

আপনি কী ভাবেন যে আমি টেকনেট নিবন্ধের নীচে থেকে আরও ভাল উদাহরণ নিয়ে আসব?
ম্যাথিউপি

15
না, তবে সম্ভবত আপনার প্রযুক্তিগত নিবন্ধের অংশটি নেওয়া উচিত যা প্রাসঙ্গিক। আমি এমন কিছু সম্পাদনা করেছি যা পর্যাপ্ত হওয়া উচিত।
মার্ক হেন্ডারসন

এটি কার্যকর করার জন্য আইআইএস পুনরায় চালু করা দরকার?
ক্রুনাল

10

আমি কোনও সাইটের সাথে একটি https বাইন্ডিং যুক্ত করার চেষ্টা করার প্রক্রিয়াটি পেরেছিলাম এবং এটি বেশ বেদনাদায়ক হতে পারে। প্রতিটি পদক্ষেপটি সম্পাদন করার জন্য অনেকগুলি উপায় রয়েছে এবং প্রত্যেকেরই সমস্যা রয়েছে। আমি চূড়ান্ত সমাধানটি রেখে চলেছি এই আশায় যে কেউ এটির কাজে লাগবে।

এই সমাধানটি ধরে নেয় যে আপনি আইআইএস ইনস্টল করেছেন এবং একটি ওয়েব সাইট সংজ্ঞায়িত হয়েছে। এই পোস্টের উদ্দেশ্যে স্যাম্পল.কমটস.কম সাইটে কল করুন। ধরে নিন যে আপনি যে নমুনা.কন্টোস.কম.পিএফএক্স ফাইলটিও ব্যবহার করতে চান তাতে একটি শংসাপত্র রয়েছে।

প্রথম পদক্ষেপটি ফাইল থেকে শংসাপত্রটি আমদানি করা।

$certPwd = ConvertTo-SecureString -String "password" -Force -AsPlainText
$webServerCert = Import-PfxCertificate -FilePath c:\some\folder\sample.contoso.com.pfx -CertStoreLocation Cert:\LocalMachine\My -Password $certPwd

এটি যথেষ্ট হলে ভাল হবে। এবং কিছু ক্ষেত্রে এটি হতে পারে। তবে, আমার কাছে এটি ব্যক্তিগত কীতে সঠিক অ্যাক্সেস ছাড়াই শংসাপত্রটি রেখে গেছে। এটি পাওয়ারশেল ত্রুটির কারণে "একটি নির্দিষ্ট লগন সেশনটির উপস্থিতি নেই already এটি ইতিমধ্যে বন্ধ হয়ে যেতে পারে" যখন আমি বাইন্ডিংয়ে শংসাপত্র যুক্ত করতে যাই (সেই পদক্ষেপটি পরে দেখুন)। সুতরাং, পরবর্তী পদক্ষেপটি প্রাইভেট কীটির জন্য এসিএল ঠিক করা।

$privateKeyFilename = $webServerCert.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName
$privateKeyFullPath = "c:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\"+$privateKeyFilename
$aclRule = "SYSTEM", "Full", "Allow"
$aclEntry = New-Object System.Security.AccessControl.FileSystemAccessRule $aclRule
$privateKeyAcl = (Get-Item $privateKeyFullPath).GetAccessControl("Access")
$privateKeyAcl.AddAccessRule($aclEntry)
Set-Acl $privateKeyFullPath $privateKeyAcl

এটি যদি এমন ফোল্ডারটি উত্তরাধিকার সূত্রে না পেয়ে থাকে তবে স্থানীয় সিস্টেমটি ব্যক্তিগত কীতে সম্পূর্ণ অ্যাক্সেসের অনুমতি দেবে।

আপনি যদি ইতিমধ্যে ইনস্টল থাকা শংসাপত্র পেতে চান তবে আপনার এটির জন্য হ্যাশ দরকার এবং এটি গেট-আইটেমের মতো পুনরুদ্ধার করতে পারেন:

$webServerCert = get-item Cert:\LocalMachine\My\XFX2DX02779XFD1F6F4X8435A5X26ED2X8DEFX95

পরবর্তী পদক্ষেপটি বাইন্ডিং তৈরি করা।

New-WebBinding -Name sample.contoso.com -IPAddress * -Port 443 -Protocol "https"

এটা মনে রাখা গুরুত্বপূর্ণ যে "https" কেস সংবেদনশীল। আপনি যদি তার পরিবর্তে "এইচটিটিপিএস" ব্যবহার করেন তবে আপনি একটি সত্যই আলাদা বাইন্ডিং ফলাফল পাবেন।

এই বাইন্ডিংটিতে এটির সাথে এখনও কোনও শংসাপত্র সংযুক্ত নেই, সুতরাং সর্বশেষ পদক্ষেপটি শংসাপত্রটি সংযুক্ত করা। যদি শংসাপত্রটি সঠিকভাবে বিশ্বাসযোগ্য হয় এবং সুরক্ষা সঠিক হয় তবে এই পদক্ষেপটি সফল হওয়া উচিত। যদিও শংসাপত্রের সাথে কোনও সমস্যা থাকলে তা চূড়ান্ত হতে পারে।

$bind = Get-WebBinding -Name $webSiteDNSName -Protocol https
$bind.AddSslCertificate($webServerCert.GetCertHashString(), "my")

যদি এটি কোনও লগন সেশন সম্পর্কে কোনও বার্তা দিয়ে ব্যর্থ হয় তবে শংসাপত্রটিতে কিছু সমস্যা হতে পারে। আরও তথ্যের জন্য ইভেন্ট দর্শকের পর্যালোচনা করুন। আমার প্রচেষ্টার সময়, আমি সুরক্ষা লগে 5061 ইভেন্টটি পেয়েছি। এটি ব্যর্থ হয়ে গেলে, এটি দেখিয়েছিল যে ওপেনকে 80090016 (কীসেটটি বিদ্যমান নেই) দিয়ে ব্যর্থ হয়েছে। এবং ব্যর্থতাটি ছিল কারণ SYSTEM- র ব্যক্তিগত কীতে অ্যাক্সেস নেই।

Https বাইন্ডিং তৈরি করার জন্য এটি আমার পক্ষে যথেষ্ট ছিল। HTTP বাইন্ডিংটি নিউ-ওয়েবসাইটের সেমিডলেট ব্যবহারের একটি উপ-উত্পাদন ছিল। যদি এটি নিখরচায় না আসে, আমি পোর্ট 80 বাই-বাইন্ডিংটি নিউ-ওয়েববাইন্ডিং সেমিডলেটের সাথে চ্যালেঞ্জ হিসাবে খুঁজে পেলাম না।


1
আমি এই উত্তরটির প্রশংসা করেছি, তবে মনে হচ্ছে @ stackoverflow.com/questions/32390097/… এর চেয়ে সহজ রাস্তা হতে পারে ।
পিটার মাজেদ

1
আমি সম্মত হই যে নতুন-আইটেম সিনট্যাক্সের চেয়ে অ্যাডস্লস সার্টিফিকেট কলটি আরও আনন্দিত এবং আমি এটি প্রতিস্থাপন করেছি। এর মধ্য দিয়ে কাজ করার সময় আমার যে হতাশা ছিল তা হ'ল আমি পেয়েছি এমন ত্রুটি বার্তা এবং এই সত্য যে আমি তাদের গুগল অনুসন্ধান ব্যবহার করে কোনও রেজোলিউশনে ফিরিয়ে দিতে পারি না। সুতরাং, বাকী শব্দগুলি ভবিষ্যতে বা অন্য কারও জন্য সেই প্রক্রিয়াটি সহজ করার সাথে সম্পর্কিত।
অধ্যাপক ভন লেমনগার্গেল

4

আমি মনে করি আপনি যা করছেন তা নিম্নলিখিত:

$bindings = @(
   @{protocol="http";bindingInformation=$ip + ":"+ $port + ":" + $hostRecord},
   @{protocol="https";bindingInformation=$ip + ":"+ $port + ":" + $hostRecord}
)

মূলত আপনাকে বাইন্ডিংগুলির একটি অ্যারে পাস করতে হবে More আরও সহায়ক তথ্য এখানে - ( http://blogs.iis.net/jeonghwan/iis-powershell-user-guide-comparing- বিবরণী- আইস- লুই-টাস্ক )

(সম্পাদনা করুন: অ্যারে সিনট্যাক্সে স্থির টাইপ - বহিরাগত কমা)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.