NOP 4.40.3 In the canonical tag it is missing the protocol https for example.
<link rel=canonical content=www.domain.com/xxx itemprop=url> instead of <link rel=canonical content=https://www.domain.com/xxx itemprop=url>
When missing the protocol it is consider that it is http. So all pages https will have a different canonical url compared with the real one. Not good for SEO. It will be pointing to http instead of https
When you enable canonical URLs (admin area > configuration > settings >general settings), the appropriate link tag is generated with a protocol (http or https). So it works fine out of the box.
You can check it here. The last parameter inserts the current protocol.
it works fine out of the box. Please check your \Views\Product\ProductTemplate.Simple.cshtml file. It should have a valid code for canonical URL generation
P.S. If you're using a custom theme, then check at \Themes\{ThemeName}\\Views\Product\ProductTemplate.Simple.cshtml