From 118efbe8ae482d29d6dc05754cb51a00c0967134 Mon Sep 17 00:00:00 2001 From: Scott Bowler Date: Mon, 3 Sep 2018 10:49:29 +0100 Subject: [PATCH 01/12] Fix issue where taxamt not set after import --- app/Http/Controllers/EventAttendeesController.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/Http/Controllers/EventAttendeesController.php b/app/Http/Controllers/EventAttendeesController.php index e4464488..f4f7883c 100644 --- a/app/Http/Controllers/EventAttendeesController.php +++ b/app/Http/Controllers/EventAttendeesController.php @@ -288,6 +288,7 @@ class EventAttendeesController extends MyBaseController } $ticket_id = $request->get('ticket_id'); + $event = Event::findOrFail($event_id); $ticket_price = 0; $email_attendee = $request->get('email_ticket'); $num_added = 0; @@ -318,6 +319,16 @@ class EventAttendeesController extends MyBaseController $order->amount = $ticket_price; $order->account_id = Auth::user()->account_id; $order->event_id = $event_id; + + // Calculating grand total including tax + $orderService = new OrderService($ticket_price, 0, $event); + $orderService->calculateFinalCosts(); + $order->taxamt = $orderService->getTaxAmount(); + + if ($orderService->getGrandTotal() == 0) { + $order->is_payment_received = 1; + } + $order->save(); /** @@ -874,3 +885,4 @@ class EventAttendeesController extends MyBaseController } + From 534d3a2126dcaef668d7b3866582b9dffcbedca8 Mon Sep 17 00:00:00 2001 From: Scott Bowler Date: Mon, 3 Sep 2018 14:44:56 +0100 Subject: [PATCH 02/12] Modify deprecated "lists" to "pluck" --- resources/views/ManageEvent/Modals/EditQuestion.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/ManageEvent/Modals/EditQuestion.blade.php b/resources/views/ManageEvent/Modals/EditQuestion.blade.php index 6d9030da..410b90ea 100644 --- a/resources/views/ManageEvent/Modals/EditQuestion.blade.php +++ b/resources/views/ManageEvent/Modals/EditQuestion.blade.php @@ -90,7 +90,7 @@ @foreach ($event->tickets as $ticket)
- id, $question->tickets->lists('id')->toArray()) ? 'checked' : ''}} id="ticket_{{ $ticket->id }}" data-toggle="toggle" name="tickets[]" type="checkbox" value="{{ $ticket->id }}"> + id, $question->tickets->pluck('id')->toArray()) ? 'checked' : ''}} id="ticket_{{ $ticket->id }}" data-toggle="toggle" name="tickets[]" type="checkbox" value="{{ $ticket->id }}">
@endforeach @@ -106,4 +106,4 @@ {!! Form::close() !!} - \ No newline at end of file + From d6bada6382309748620221aa90aba85ee39a847e Mon Sep 17 00:00:00 2001 From: dsnap1993 Date: Sat, 29 Sep 2018 01:15:57 +0900 Subject: [PATCH 03/12] fix bug where postMessageOrder gets datas of orders table --- app/Http/Controllers/EventOrdersController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/EventOrdersController.php b/app/Http/Controllers/EventOrdersController.php index fe383bb1..d4887fe0 100644 --- a/app/Http/Controllers/EventOrdersController.php +++ b/app/Http/Controllers/EventOrdersController.php @@ -434,7 +434,7 @@ class EventOrdersController extends MyBaseController ]); } - $order = Attendee::scope()->findOrFail($order_id); + $order = Order::scope()->findOrFail($order_id); $data = [ 'order' => $order, From 5cdfe7151bd2f8bd9dd2b057dd5e9b2de7120f57 Mon Sep 17 00:00:00 2001 From: Sebastian Schmidt Date: Sat, 22 Sep 2018 21:12:16 +1000 Subject: [PATCH 04/12] Fix XSS vulnerability on QR code scanner --- .../Controllers/EventCheckInController.php | 4 +++- public/assets/javascript/check_in.js | 8 +++----- public/assets/stylesheet/check_in.css | 3 +++ resources/lang/en/Attendee.php | 6 ++++-- resources/lang/en/Controllers.php | 19 +++++++++---------- resources/lang/pl/Attendee.php | 8 +++++--- resources/lang/pl/Controllers.php | 3 +-- resources/views/ManageEvent/CheckIn.blade.php | 17 +++++++++++------ 8 files changed, 39 insertions(+), 29 deletions(-) diff --git a/app/Http/Controllers/EventCheckInController.php b/app/Http/Controllers/EventCheckInController.php index 2cbcf94c..8468f875 100644 --- a/app/Http/Controllers/EventCheckInController.php +++ b/app/Http/Controllers/EventCheckInController.php @@ -185,7 +185,9 @@ class EventCheckInController extends MyBaseController return response()->json([ 'status' => 'success', - 'message' => trans("Controllers.attendee_check_in_success", ["name"=>$attendee->first_name." ".$attendee->last_name, "ref"=>$attendee->reference, "ticket"=>$attendee->ticket]).$appendedText + 'name' => $attendee->first_name." ".$attendee->last_name, + 'reference' => $attendee->reference, + 'ticket' => $attendee->ticket ]); } diff --git a/public/assets/javascript/check_in.js b/public/assets/javascript/check_in.js index 0ed0da41..54cb2ee4 100644 --- a/public/assets/javascript/check_in.js +++ b/public/assets/javascript/check_in.js @@ -15,8 +15,7 @@ var checkinApp = new Vue({ canvasContext: $('canvas#QrCanvas')[0].getContext('2d'), successBeep: new Audio('/mp3/beep.mp3'), scanResult: false, - scanResultMessage: '', - scanResultType: null + scanResultObject: {} }, created: function () { @@ -78,11 +77,10 @@ var checkinApp = new Vue({ this.$http.post(Attendize.qrcodeCheckInRoute, {attendee_reference: attendeeReferenceCode}).then(function (res) { this.successBeep.play(); this.scanResult = true; - this.scanResultMessage = res.data.message; - this.scanResultType = res.data.status; + this.scanResultObject = res.data; }, function (response) { - this.scanResultMessage = lang("whoops2"); + this.scanResultObject.message = lang("whoops2"); }); }, diff --git a/public/assets/stylesheet/check_in.css b/public/assets/stylesheet/check_in.css index 3b605eb5..3c340064 100644 --- a/public/assets/stylesheet/check_in.css +++ b/public/assets/stylesheet/check_in.css @@ -216,6 +216,9 @@ footer { text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.63); } +.uppercase { + text-transform: uppercase; +} diff --git a/resources/lang/en/Attendee.php b/resources/lang/en/Attendee.php index 877d9439..147674fd 100644 --- a/resources/lang/en/Attendee.php +++ b/resources/lang/en/Attendee.php @@ -1,6 +1,6 @@ 'First Name', 'last_name' => 'Last Name', 'name' => 'Name', + 'ticket' => 'Ticket', + 'reference' => 'Reference', 'search_attendees' => 'Search Attendees...', 'send_invitation_n_ticket_to_attendee' => 'Send invitation & ticket to attendee.', -); \ No newline at end of file +); diff --git a/resources/lang/en/Controllers.php b/resources/lang/en/Controllers.php index d5d170ce..793e6644 100644 --- a/resources/lang/en/Controllers.php +++ b/resources/lang/en/Controllers.php @@ -1,12 +1,12 @@ + 'sort' => array ( 'event_title' => 'Event Title', 'start_date' => 'Start Date', @@ -22,7 +22,6 @@ return array ( 'addInviteError' => 'You need to create a ticket before you can invite an attendee.', 'attendee_already_cancelled' => 'Attendee Already Cancelled', 'attendee_already_checked_in' => 'Attendee already checked in at :time ', - 'attendee_check_in_success' => 'Success !
Name: :name
Reference: :ref
Ticket: :ticket.', 'attendee_exception' => 'An error occurred while inviting this attendee. Please try again.', 'attendee_successfully_checked_in' => 'Attendee Succesfully Checked In', 'attendee_successfully_checked_out' => 'Attendee Succesfully Checked Out', @@ -31,31 +30,31 @@ return array ( 'check_in_all_tickets' => 'Check in all tickets associated to this order', 'confirmation_malformed' => 'The confirmation code is missing or malformed.', 'confirmation_successful' => 'Success! Your email is now verified. You can now login.', - 'error' => + 'error' => array ( - 'email' => + 'email' => array ( 'email' => 'Please enter a valid E-mail address.', 'required' => 'E-mail address is required.', 'unique' => 'E-mail already in use for this account.', ), - 'first_name' => + 'first_name' => array ( 'required' => 'Please enter your first name.', ), - 'last_name' => + 'last_name' => array ( 'required' => 'Please enter your last name.', ), - 'page_bg_color' => + 'page_bg_color' => array ( 'required' => 'Please enter a background color.', ), - 'page_header_bg_color' => + 'page_header_bg_color' => array ( 'required' => 'Please enter a header background color.', ), - 'password' => + 'password' => array ( 'passcheck' => 'This password is incorrect.', ), diff --git a/resources/lang/pl/Attendee.php b/resources/lang/pl/Attendee.php index c7e998fc..109bd28b 100644 --- a/resources/lang/pl/Attendee.php +++ b/resources/lang/pl/Attendee.php @@ -1,6 +1,6 @@ 'Uczestnicy Wydarzenia', 'first_name' => 'Imię', 'last_name' => 'Nazwisko', - 'name' => 'Imię i Nazwisko', + 'name' => 'Imię', + 'ticket' => 'Bilet', + 'reference' => 'Zamówienie', 'search_attendees' => 'Przeszukaj dane uczestników...', 'send_invitation_n_ticket_to_attendee' => 'Wyślij zaproszenie i bilet do uczestnika.', -); \ No newline at end of file +); diff --git a/resources/lang/pl/Controllers.php b/resources/lang/pl/Controllers.php index 13f81029..2d7aa3f6 100644 --- a/resources/lang/pl/Controllers.php +++ b/resources/lang/pl/Controllers.php @@ -7,7 +7,7 @@ return array ( //============================== New strings to translate ==============================// // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\ManageOrganiser\\Events.blade.php 'sort' => - array ( + array ( 'event_title' => 'Nazwa Wydarzenia', 'start_date' => 'Data Rozpoczęcia', 'created_at' => 'Data Utworzenia', @@ -22,7 +22,6 @@ return array ( 'addInviteError' => 'Musisz utworzyć bilet zanim utworzysz uczestnika.', 'attendee_already_cancelled' => 'Uczestnik już anulowany', 'attendee_already_checked_in' => 'Uczestnik już wszedł w tym momencie: :time ', - 'attendee_check_in_success' => 'Sukces !
Imię: :name
Zamówienie: :ref
Bilet: :ticket.', 'attendee_exception' => 'Wystąpił błąd w trakcie zapraszania tego uczestnika. Spróbuj ponownie.', 'attendee_successfully_checked_in' => 'Uczestnik oznaczony', 'attendee_successfully_checked_out' => 'Uczestnik odznaczony', diff --git a/resources/views/ManageEvent/CheckIn.blade.php b/resources/views/ManageEvent/CheckIn.blade.php index ea0d4f9a..e7b5b1b7 100644 --- a/resources/views/ManageEvent/CheckIn.blade.php +++ b/resources/views/ManageEvent/CheckIn.blade.php @@ -132,16 +132,21 @@
-
- - +
+ +
- - @{{{ scanResultMessage }}} + + @{{ scanResultObject.message }} - + + @lang("Attendee.name"): @{{ scanResultObject.name }}
+ @lang("Attendee.reference"): @{{scanResultObject.reference }}
+ @lang("Attendee.ticket"): @{{scanResultObject.ticket }} +
+
@lang("Attendee.scanning")...
From 0b831955f288fa820bd467266882d94791fe1884 Mon Sep 17 00:00:00 2001 From: Sebastian Schmidt Date: Sun, 30 Sep 2018 16:46:33 +1000 Subject: [PATCH 05/12] Fix a DoS or even PrivEsc vuln on POST /install POST on /install must not respond when already installed. Denial of Service and possibly Privilege Escalation by changing the database/mail server --- app/Http/Controllers/InstallerController.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/Http/Controllers/InstallerController.php b/app/Http/Controllers/InstallerController.php index 57ab0e10..4342a47e 100644 --- a/app/Http/Controllers/InstallerController.php +++ b/app/Http/Controllers/InstallerController.php @@ -87,6 +87,10 @@ class InstallerController extends Controller */ public function postInstaller(Request $request) { + if (file_exists(base_path('installed'))) { + abort(404); + } + set_time_limit(300); $database['type'] = $request->get('database_type'); From 1eae6cce01531a4d9fd2a5b0e06419b747dbc1ef Mon Sep 17 00:00:00 2001 From: Jeremy Quinton Date: Mon, 24 Sep 2018 11:09:37 +0200 Subject: [PATCH 06/12] remove any html tags on user input --- app/Http/Controllers/EventCheckoutController.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/EventCheckoutController.php b/app/Http/Controllers/EventCheckoutController.php index 5d6f94df..c8082831 100644 --- a/app/Http/Controllers/EventCheckoutController.php +++ b/app/Http/Controllers/EventCheckoutController.php @@ -539,8 +539,8 @@ class EventCheckoutController extends Controller if ($ticket_order['order_requires_payment'] && !isset($request_data['pay_offline'])) { $order->payment_gateway_id = $ticket_order['payment_gateway']->id; } - $order->first_name = $request_data['order_first_name']; - $order->last_name = $request_data['order_last_name']; + $order->first_name = strip_tags($request_data['order_first_name']); + $order->last_name = strip_tags($request_data['order_last_name']); $order->email = $request_data['order_email']; $order->order_status_id = isset($request_data['pay_offline']) ? config('attendize.order_awaiting_payment') : config('attendize.order_complete'); $order->amount = $ticket_order['order_total']; @@ -624,8 +624,8 @@ class EventCheckoutController extends Controller for ($i = 0; $i < $attendee_details['qty']; $i++) { $attendee = new Attendee(); - $attendee->first_name = $request_data["ticket_holder_first_name"][$i][$attendee_details['ticket']['id']]; - $attendee->last_name = $request_data["ticket_holder_last_name"][$i][$attendee_details['ticket']['id']]; + $attendee->first_name = strip_tags($request_data["ticket_holder_first_name"][$i][$attendee_details['ticket']['id']]); + $attendee->last_name = strip_tags($request_data["ticket_holder_last_name"][$i][$attendee_details['ticket']['id']]); $attendee->email = $request_data["ticket_holder_email"][$i][$attendee_details['ticket']['id']]; $attendee->event_id = $event_id; $attendee->order_id = $order->id; From b62e41265f0768822094ab047aab3a5cc962a688 Mon Sep 17 00:00:00 2001 From: Jeremy Quinton Date: Mon, 24 Sep 2018 11:10:31 +0200 Subject: [PATCH 07/12] strip html tags as the string is not escaped by blade --- resources/views/ManageEvent/Modals/EditAttendee.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/ManageEvent/Modals/EditAttendee.blade.php b/resources/views/ManageEvent/Modals/EditAttendee.blade.php index f31750b3..b054b6bb 100644 --- a/resources/views/ManageEvent/Modals/EditAttendee.blade.php +++ b/resources/views/ManageEvent/Modals/EditAttendee.blade.php @@ -6,7 +6,7 @@
+ + + @if(!$attendee->is_cancelled) + {!!Form::checkbox('attendees[]', $attendee->id, false, ['class' => + 'attendee-check'])!!} + @endif + + + {{$attendee->first_name}} + {{$attendee->last_name}} + + + {{$attendee->email}} + + + {{{$attendee->ticket->title}}} + {{{$order->order_reference}}}-{{{$attendee->reference_index}}} + + + @endforeach + + + @else -
- @lang("ManageEvent.all_attendees_cancelled") -
+
+ @lang("ManageEvent.all_attendees_cancelled") +
@endif @if($order->transaction_id) - @if($order->payment_gateway->can_refund) + @if($order->payment_gateway->can_refund)
@if(!$order->is_refunded) -
-
-
- -
+
+
+
+
+
-
-
+
+
-
-
-
- {!!Form::radio('refund_type', 'full', ['selected' => 'selected'])!!} -
+
+
+
+ {!!Form::radio('refund_type', 'full', ['selected' => 'selected'])!!}
-
- @lang("ManageEvent.issue_full_refund") +
+
+ @lang("ManageEvent.issue_full_refund") -
- Refund the - entire {{(money($order->organiser_amount - $order->amount_refunded, $order->event->currency))}} -
+
+ Refund the + entire {{(money($order->organiser_amount - $order->amount_refunded, + $order->event->currency))}}
+
-
-
-
-
- {!!Form::radio('refund_type', 'partial')!!} -
+
+
+
+
+ {!!Form::radio('refund_type', 'partial')!!}
-
- @lang("ManageEvent.issue_partial_refund") +
+
+ @lang("ManageEvent.issue_partial_refund") -
-
-
- @lang("ManageEvent.refund_amount"): -
-
- -
+
+
+
+ @lang("ManageEvent.refund_amount"): +
+
+
@@ -157,30 +160,33 @@
+
@else -
- @lang("ManageEvent.all_order_refunded", ["money"=>money($order->amount_refunded, $order->event->currency)]) -
+
+ @lang("ManageEvent.all_order_refunded", ["money"=>money($order->amount_refunded, + $order->event->currency)]) +
@endif
- @else -
- {!! @trans("ManageEvent.cant_refund_here", ["gateway"=>$order->payment_gateway->provider_name]) !!} -
- @endif + @else +
+ {{ @trans("ManageEvent.cant_refund_here", ["gateway"=>$order->payment_gateway->provider_name]) }} +
+ @endif @endif
@if($attendees->count() || !$order->is_refunded) - + @endif
{!! Form::close() !!} diff --git a/resources/views/ManageEvent/Modals/EditAttendee.blade.php b/resources/views/ManageEvent/Modals/EditAttendee.blade.php index b054b6bb..fa830c7c 100644 --- a/resources/views/ManageEvent/Modals/EditAttendee.blade.php +++ b/resources/views/ManageEvent/Modals/EditAttendee.blade.php @@ -6,7 +6,7 @@
From 3868bd4e9ee15fb760c69c558525bc5afacfb743 Mon Sep 17 00:00:00 2001 From: Jeremy Quinton Date: Sat, 29 Sep 2018 15:32:14 +0200 Subject: [PATCH 09/12] Fixed small publish event link --- resources/views/ManageEvent/Partials/TopNav.blade.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/views/ManageEvent/Partials/TopNav.blade.php b/resources/views/ManageEvent/Partials/TopNav.blade.php index af725a0f..741af4e5 100644 --- a/resources/views/ManageEvent/Partials/TopNav.blade.php +++ b/resources/views/ManageEvent/Partials/TopNav.blade.php @@ -6,7 +6,8 @@ }
- @trans("ManageEvent.event_not_live_with_activate", ["url"=>route('MakeEventLive', ['event_id' => $event->id])]) . + {{ @trans("ManageEvent.event_not_live") }} + {{ @trans("ManageEvent.publish_it") }}
@endif @stop From 861c2f5434c6eb1afe268e4419aa799dcc61108e Mon Sep 17 00:00:00 2001 From: Jeremy Quinton Date: Tue, 2 Oct 2018 08:58:53 +0200 Subject: [PATCH 10/12] use strip tags instead of validator --- app/Models/Ticket.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Models/Ticket.php b/app/Models/Ticket.php index ebd5c2ab..d6ce98eb 100644 --- a/app/Models/Ticket.php +++ b/app/Models/Ticket.php @@ -14,9 +14,9 @@ class Ticket extends MyBaseModel * @var array $rules */ public $rules = [ - 'title' => ['required','alpha_dash'], + 'title' => ['required'], 'price' => ['required', 'numeric', 'min:0'], - 'description' => ['alpha_dash'], + 'description' => [], 'start_sale_date' => ['date'], 'end_sale_date' => ['date', 'after:start_sale_date'], 'quantity_available' => ['integer', 'min:0'], From 7772df330039aa38989be09c13863b78f6bb9097 Mon Sep 17 00:00:00 2001 From: Jeremy Quinton Date: Tue, 2 Oct 2018 09:50:26 +0200 Subject: [PATCH 11/12] added strip tags --- app/Http/Controllers/EventTicketsController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/EventTicketsController.php b/app/Http/Controllers/EventTicketsController.php index c00580cc..cb58ac47 100644 --- a/app/Http/Controllers/EventTicketsController.php +++ b/app/Http/Controllers/EventTicketsController.php @@ -99,7 +99,7 @@ class EventTicketsController extends MyBaseController } $ticket->event_id = $event_id; - $ticket->title = $request->get('title'); + $ticket->title = strip_tags($request->get('title')); $ticket->quantity_available = !$request->get('quantity_available') ? null : $request->get('quantity_available'); $ticket->start_sale_date = $request->get('start_sale_date') ? Carbon::createFromFormat('d-m-Y H:i', $request->get('start_sale_date')) : null; @@ -108,7 +108,7 @@ class EventTicketsController extends MyBaseController $ticket->price = $request->get('price'); $ticket->min_per_person = $request->get('min_per_person'); $ticket->max_per_person = $request->get('max_per_person'); - $ticket->description = $request->get('description'); + $ticket->description = strip_tags($request->get('description')); $ticket->is_hidden = $request->get('is_hidden') ? 1 : 0; $ticket->save(); From 287881b64c6f3ee72ae1499539dc4835c6800d1c Mon Sep 17 00:00:00 2001 From: Jeremy Quinton Date: Tue, 2 Oct 2018 12:15:20 +0200 Subject: [PATCH 12/12] add self signed cert to ngix --- Dockerfile-nginx | 6 ++++++ docker-compose.yml | 1 + nginx.conf | 7 +++++++ self-signed.conf | 2 ++ ssl-params.conf | 21 +++++++++++++++++++++ 5 files changed, 37 insertions(+) create mode 100644 self-signed.conf create mode 100644 ssl-params.conf diff --git a/Dockerfile-nginx b/Dockerfile-nginx index 8fe57077..a9c6196b 100644 --- a/Dockerfile-nginx +++ b/Dockerfile-nginx @@ -1,2 +1,8 @@ FROM nginx:latest COPY nginx.conf /etc/nginx/conf.d/default.conf +RUN apt-get update && apt-get install openssl +RUN openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt -subj "/C=GB/ST=London/L=London/O=NA/CN=localhost" +RUN openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 +RUN mkdir /etc/nginx/snippets +COPY self-signed.conf /etc/nginx/snippets/self-signed.conf +COPY ssl-params.conf /etc/nginx/snippets/ssl-params.conf diff --git a/docker-compose.yml b/docker-compose.yml index 957b2f69..d9d31683 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,6 +9,7 @@ services: - ./.env ports: - "8080:80" + - "8081:443" networks: - attendizenet volumes: diff --git a/nginx.conf b/nginx.conf index c7c665b0..dc48bb3e 100644 --- a/nginx.conf +++ b/nginx.conf @@ -2,6 +2,13 @@ server { listen 80 default_server; server_name localhost; + listen 443 ssl http2 default_server; + listen [::]:443 ssl http2 default_server; + + include snippets/self-signed.conf; + include snippets/ssl-params.conf; + + root /usr/share/nginx/html/attendize/public; index index.php; diff --git a/self-signed.conf b/self-signed.conf new file mode 100644 index 00000000..39332d77 --- /dev/null +++ b/self-signed.conf @@ -0,0 +1,2 @@ +ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; +ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; \ No newline at end of file diff --git a/ssl-params.conf b/ssl-params.conf new file mode 100644 index 00000000..42e50b26 --- /dev/null +++ b/ssl-params.conf @@ -0,0 +1,21 @@ +# from https://cipherli.st/ +# and https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html + +ssl_protocols TLSv1 TLSv1.1 TLSv1.2; +ssl_prefer_server_ciphers on; +ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; +ssl_ecdh_curve secp384r1; +ssl_session_cache shared:SSL:10m; +ssl_session_tickets off; +ssl_stapling on; +ssl_stapling_verify on; +resolver 8.8.8.8 8.8.4.4 valid=300s; +resolver_timeout 5s; +# Disable preloading HSTS for now. You can use the commented out header line that includes +# the "preload" directive if you understand the implications. +#add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; +add_header Strict-Transport-Security "max-age=63072000; includeSubdomains"; +add_header X-Frame-Options DENY; +add_header X-Content-Type-Options nosniff; + +ssl_dhparam /etc/ssl/certs/dhparam.pem; \ No newline at end of file