چالشهای متداول توسعهدهندگان ASP.NET Core هنگام استفاده از Nginx - قسمت چهارم - امنیت و SSL/TLS
نویسنده: وحید نصیری
تاریخ: ۱۴۰۴/۰۴/۱۰ ۰۸:۱۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
your-domain.com).A دامنه شما (و سابدامین www) باید به آدرس IP عمومی سرور شما اشاره کند. Certbot برای تایید مالکیت شما، از طریق این دامنه به سرور شما متصل میشود.sudo apt update sudo apt install certbot python3-certbot-nginx
# -d برای مشخص کردن دامنههاست. میتوانید چند دامنه را مشخص کنید. sudo certbot --nginx -d your-domain.com -d www.your-domain.com
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
https://your-domain.com در دسترس است!/etc/nginx/sites-available/kestrel-mywebapp را باز کنید، میبینید که Certbot آن را به شکل زیر تغییر داده است:server {
server_name your-domain.com www.your-domain.com;
location / {
# ... تنظیمات پراکسی شما
}
# این خطوط توسط Certbot اضافه شدهاند
listen [::]:443 ssl ipv6only=on; # مدیریت شده توسط Certbot
listen 443 ssl; # مدیریت شده توسط Certbot
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem; # مدیریت شده توسط Certbot
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem; # مدیریت شده توسط Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # مدیریت شده توسط Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # مدیریت شده توسط Certbot
}
server {
if ($host = www.your-domain.com) {
return 301 https://$host$request_uri;
} # مدیریت شده توسط Certbot
if ($host = your-domain.com) {
return 301 https://$host$request_uri;
} # مدیریت شده توسط Certbot
listen 80;
listen [::]:80;
server_name your-domain.com www.your-domain.com;
return 404; # مدیریت شده توسط Certbot
}server برای پورت 443 (HTTPS) با مسیر گواهیها ایجاد شده و بلاک قبلی پورت 80 (HTTP) اکنون تمام درخواستها را به نسخه HTTPS ریدایرکت میکند.systemd timer یا cron job روی سیستم شما تنظیم میکند که دو بار در روز اجرا شده و گواهیهایی که نزدیک به تاریخ انقضا هستند را به صورت خودکار تمدید میکند.sudo certbot renew --dry-run
HTTPS بارگذاری شده، اما برخی از منابع آن (یک تصویر، یک فایل CSS یا JS) با آدرس http:// فراخوانی شدهاند.X-Forwarded-Proto که در فصل قبل تنظیم کردیم، وجود دارد. این کار اکثر لینکهای سمت سرور را اصلاح میکند.http:// را به https:// تغییر دهید یا از آدرسهای نسبی (/images/logo.png) یا پروتکل-نسبی (//example.com/logo.png) استفاده کنید.server پورت 443 خود اضافه کنید: server {
listen 443 ssl;
server_name your-domain.com;
# ... مسیر گواهیها
# جلوگیری از نمایش سایت در یک iframe در سایتهای دیگر (Clickjacking)
add_header X-Frame-Options "SAMEORIGIN";
# جلوگیری از حملات MIME-type sniffing
add_header X-Content-Type-Options "nosniff";
# فعال کردن حفاظت XSS در مرورگرهای سازگار
add_header X-XSS-Protection "1; mode=block";
location / {
# ...
}
}/etc/nginx/nginx.conf را باز کرده و در بلاک http خط زیر را اضافه (یا uncomment) کنید: server_tokens off;# اجازه به ترافیک رمزنگاری شده و استاندارد وب sudo ufw allow 'Nginx Full' # بستن دسترسی مستقیم به پورت برنامه (مثلا 5000) sudo ufw deny 5000 # اگر فایروال غیرفعال است، آن را فعال کنید sudo ufw enable